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¶
3. Ask a coding question¶
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.