A local autonomous AI agent for working with files and code on your machine. Runs through Ollama — no cloud API keys and no internet requests required, the model runs locally on your hardware.
- Autonomous "think → act → observe" loop — the agent plans its own steps, calls tools, and checks the results.
- File operations — reading, writing, and targeted editing (block text replacement).
- Git support — check repository status.
- Project search — grep-like text search across all workspace files.
- Terminal command execution directly from the agent's conversation.
- Local LLM — uses Ollama by default (e.g.
llama3), so no code is sent anywhere. - Graphical interface — dark, terminal-style UI built with PyQt6.
Repos-Coder/
├── agent/ # agent core: planner, memory, executor, system prompt
├── llm/ # abstraction over LLM providers (currently Ollama)
├── tools/ # agent tools: files, git, search, terminal
├── cli/ # entry point — GUI application
├── config.py # agent configuration (model, workspace, limits)
└── requirements.txt
- Install and run Ollama, then pull a model:
ollama run llama3
- Clone the repository and install dependencies:
git clone https://github.com/vipol0/Repos-Coder.git cd Repos-Coder pip install -r requirements.txt pip install PyQt6
python cli/main.pyThis opens the agent window. Type a task in the input field — for example fix typecheck errors — and the agent will start working in the current working directory.
Agent settings are defined in config.py (AgentConfig):
| Parameter | Default | Description |
|---|---|---|
workspace_dir |
current directory | agent's working folder |
llm_provider |
ollama |
LLM provider |
llm_model |
llama3 |
model name |
api_base |
http://localhost:11434 |
Ollama endpoint |
temperature |
0.0 |
generation temperature |
max_iterations |
30 |
step limit per task |
The agent communicates with the model using a strict protocol: every action the model wants to take must be returned as a JSON block, e.g.:
{"action": "write_file", "path": "example.py", "content": "print('hi')"}ToolExecutor parses this block, calls the corresponding tool, and feeds the result back into the model's context as an Observation. This loop repeats until the model returns a final_response block or the iteration limit is reached.
Early development stage (v0.0.1). Known limitations:
- Only Ollama is supported as an LLM provider.
PyQt6is not yet listed inrequirements.txt— install it separately.- No support for multi-file operations or undoing actions.