Skip to content

Code Assistant

An orchestrator agent with code execution, file I/O, and shell access. It can write scripts, read and explain code, run tests, fix bugs, and execute shell commands -- all locally on your machine.

Quickstart (5 minutes)

1. Install and initialize

git clone https://github.com/open-jarvis/OpenJarvis.git
cd OpenJarvis
uv sync --extra dev
jarvis init --preset code-assistant

This writes a pre-configured ~/.openjarvis/config.toml for the code assistant.

2. Start a local LLM via Ollama

# Install Ollama: https://ollama.com
ollama pull qwen3.5:9b

3. Ask a coding question

jarvis ask "Write a Python script that reads a CSV file and prints the top 5 rows"

The orchestrator agent will plan the approach, write the code, and can execute it if you approve.

CLI Commands

# Ask a coding question (uses orchestrator agent by default with this config)
jarvis ask "Write a Python script that parses JSON from stdin"

# Read and explain existing code
jarvis ask "Read main.py and explain the architecture"

# Fix a bug
jarvis ask "Find and fix the bug in test_utils.py"

# Run tests
jarvis ask "Run the test suite and summarize any failures"

# Explicitly specify agent and tools
jarvis ask --agent orchestrator --tools code_interpreter "Calculate the first 20 Fibonacci numbers"

# Interactive chat for iterative coding
jarvis chat

Configuration Reference

The preset writes this to ~/.openjarvis/config.toml:

[engine]
default = "ollama"

[intelligence]
default_model = "qwen3.5:9b"
# default_model = "qwen3.5:35b"    # Better for complex code tasks

[agent]
default_agent = "orchestrator"      # Multi-turn with tool selection
max_turns = 10

[tools]
enabled = ["code_interpreter", "file_read", "file_write", "shell_exec", "web_search", "think", "calculator"]

Key settings

Setting Default Description
intelligence.default_model qwen3.5:9b The model for code generation. Use qwen3.5:35b for complex tasks like refactoring or multi-file changes.
agent.default_agent orchestrator Multi-turn agent that picks tools iteratively until it has an answer.
agent.max_turns 10 Maximum tool-calling iterations. Increase for multi-step tasks.
tools.enabled 7 tools code_interpreter (execute Python), file_read, file_write, shell_exec (run shell commands), web_search, think, calculator.

Tools explained

Tool What it does
code_interpreter Executes Python code in a sandboxed environment and returns output.
file_read Reads files with path validation. The agent can inspect source code, configs, logs.
file_write Writes or modifies files. The agent can create scripts, patch code, write configs.
shell_exec Runs shell commands (e.g., git status, pytest, ls).
web_search Searches the web for documentation, Stack Overflow answers, etc.
think Internal reasoning scratchpad for planning multi-step solutions.
calculator Evaluates mathematical expressions.

Example Tasks

# Write a new script
jarvis ask "Write a Python script that converts YAML to JSON"

# Explain existing code
jarvis ask "Read src/openjarvis/core/events.py and explain the EventBus pattern"

# Debug a failing test
jarvis ask "Run pytest tests/test_memory.py -v and fix any failures"

# Refactor code
jarvis ask "Read utils.py and refactor the parse_config function to use dataclasses"

# Generate tests
jarvis ask "Read src/openjarvis/tools/calculator.py and write unit tests for it"

# Shell tasks
jarvis ask "Find all Python files larger than 100KB in this repo"

Safety Notes

The shell_exec and code_interpreter tools execute real commands on your machine. Keep these in mind:

  • shell_exec runs commands in your current user context. It can read, write, and delete files. Avoid running the agent on directories containing sensitive data without reviewing tool calls.
  • code_interpreter executes Python code. It has access to your Python environment and installed packages.
  • The agent asks for confirmation before executing potentially destructive commands when running in interactive mode (jarvis chat).
  • For stronger isolation, use the sandboxed agent: jarvis ask --agent sandboxed --tools code_interpreter "...", which runs inside a Docker/Podman container.

Troubleshooting

"Tool not found: code_interpreter" -- Make sure your config.toml includes code_interpreter in the tools.enabled list.

Agent loops without progress -- Increase max_turns if the task is complex, or use a larger model (qwen3.5:35b). The 9b model handles most single-file tasks; multi-file refactoring benefits from more parameters.

Shell command fails -- The shell_exec tool runs commands relative to where you launched jarvis. Use cd /path && command in your prompt if needed, or run jarvis from the project directory.

Web search not working -- Install with uv sync --extra tools-search and set TAVILY_API_KEY.

Code execution hangs -- The code_interpreter has a default timeout. Long-running scripts will be terminated. Break large tasks into smaller steps.