Auto-Coder is a multi-agent development companion that coordinates code generation, documentation, testing, and research tasks through LM Studio powered large language models.
Auto-Coder orchestrates a suite of specialised agents—coding, documentation, dependency management, research, testing, and more—to automate the day-to-day workflows of shipping software. Each agent collaborates through a shared session layer backed by LM Studio's chat runtime, enabling the system to draft plans, execute tool calls, apply diffs, and validate outcomes with minimal human guidance.
The repository includes:
lmstudio Python SDK for chat completions, streaming responses, and schema-constrained outputs.ToolRegistry makes it trivial to register Python callables as LM Studio tools, complete with discovery helpers for module or package scans.| Layer | Responsibilities | Key Modules |
|---|---|---|
| Session & Chat | Normalise prompts, stream responses, and manage message history while enforcing optional schemas. | chat.py, session.py |
| Orchestration | Build multi-agent workflows, surface live status updates, and coordinate retries or plan execution. | main.py, agents/manager.py |
| Specialised Agents | Apply diffs, generate docs, run tests, manage dependencies, perform research, and more. | agents/ |
| Tooling | Register reusable tools, expose safe file/process utilities, and integrate with git/patch flows. | tooling.py, internal/tools |
| Retrieval & Utilities | Provide repository-aware RAG, structured responses, and speech utilities for future integrations. | internal/RAG.py, internal/schemas.py, internal/TTS.py |
Dive deeper with the Auto-Coder documentation set for module-by-module references.
# Clone the repository
git clone https://github.com/hackall360/auto-coder.git
cd auto-coder
# Create and activate a virtual environment
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# Install Python dependencies
pip install -r requirements.txt
python main.py --config path/to/config.json --default-model anthropic/claude-3-sonnet
Run the command from the repository root to launch the Textual-powered interface. The entry point honours every shared flag defined in cli/overrides.py, so you can pass model overrides, repository indexing preferences, memory settings, and MCP options directly on the command line. Existing automation that shells into python TUI.py continues to work and boots the same UI when you prefer the module-level target.
To capture structured corpus events during a session, enable the new corpus pipeline on the CLI:
python main.py --config path/to/config.json --enable-corpus --corpus-path ~/.autocoder/corpus/events.jsonl
Complementary flags let you disable capture (--disable-corpus), tune the similarity filter (--corpus-dedup-threshold 0.7), or override event categories (--corpus-category web_search=research).
Logging defaults to structured JSON at the INFO level. Use the new verbosity flags to adjust output without editing environment variables:
--verbose raises the root logger to DEBUG.--quiet drops it to WARNING.--log-level LEVEL accepts any standard logging level name (or numeric value) and takes precedence over the AUTO_CODER_LOG_LEVEL environment variable.Handler-specific environment overrides such as AUTO_CODER_CONSOLE_LEVEL, AUTO_CODER_FILE_LEVEL, and AUTO_CODER_LOG_FILE continue to work alongside the CLI flags, so you can still direct logs to files or adjust per-handler verbosity when required.

Auto-Coder now launches its Textual terminal interface by default. The UI layers a live plan tracker, transcript, and status feeds on top of the manager runtime so you can monitor each agent while a request runs.
pip install -r requirements.txt. If you only need the Text UI, install textual>=0.56.4 and rich>=13.7 alongside the base prerequisites listed above.config.json when you want the UI to orchestrate live agent runs.python main.py --config path/to/config.json --repo-refresh-interval 120
main.py directly boots the Textual UI and accepts the full suite of shared flags (model overrides, repository indexing controls, memory settings, MCP startup options, and more). If you prefer calling the UI module explicitly, python TUI.py remains supported and recognises the exact same arguments.
/cancel and /quit helpers for graceful shutdowns.TERM=xterm-256color or switch to a terminal emulator with true-colour support.pip install textual>=0.56.4 rich>=13.7 or reinstall using the full requirements.txt to pick up Rich and Textual dependencies.Ctrl+C; press Esc followed by /quit to exit safely.agents/repo_context.py helpers with up-to-date repository information for best results.AgentBuilder.with_tools() or register_default_toolset().core.research section in config.json or the AUTO_CODER_RESEARCH_* environment variables to adjust WebRAG proxies, caching, and anonymous browsing defaults.Override the defaults for the built-in research agent by extending the
core.research section of your config.json. Cache-related knobs control how
many queries and snippets remain in memory, while the nested web mapping is
forwarded directly to the underlying web retriever:
{
"core": {
"research": {
"cache_size": 16,
"cache_top_k": 12,
"max_quote_chars": 480,
"web": {
"proxy": "http://127.0.0.1:8080",
"user_agent_pool": ["Mozilla/5.0", "Brave/1.64"],
"incognito_contexts": true,
"anonymous_browsing": false
}
}
}
}
Environment variables such as AUTO_CODER_RESEARCH_USER_AGENT_POOL (comma
separated) or AUTO_CODER_RESEARCH_PROXY provide quick overrides without
editing the file. If anonymous_browsing is omitted, Auto-Coder assumes the
inverse of core.models.allow_external_browsing, matching previous releases.
Override the manager's planning behaviour by extending the core.manager
section of your config.json. The example below increases plan retries, allows
tasks to retry twice, and injects a bespoke documentation blueprint:
{
"core": {
"manager": {
"plan_retries": 2,
"task_retry_limit": 2,
"specialist_blueprints": [
{
"name": "release-notes",
"kind": "documentation",
"agent": "documentation",
"keywords": ["release", "changelog"],
"budget": {"limit": 2, "unit": "rounds"},
"research": {"required": true, "audience": "docs"}
}
]
}
}
}
The override is optional—Auto-Coder keeps its default blueprint catalogue and single-attempt planning unless this section is provided.
Corpus capture is disabled by default so development sessions remain ephemeral. Enable it by extending the core.corpus section of your configuration or by supplying the new CLI flags described earlier:
{
"core": {
"corpus": {
"enabled": true,
"storage_path": "~/autocoder/corpus/events.jsonl",
"dedup_threshold": 0.7,
"default_categories": {
"web_search": "research",
"file_write": "repo_activity"
}
}
}
}
Auto-Coder will instantiate a shared CorpusManager, persist events to long-term memory, and append JSONL entries to the configured storage_path. Environment variables (AUTO_CODER_CORPUS_ENABLED, AUTO_CODER_CORPUS_PATH, AUTO_CODER_CORPUS_DEDUP_THRESHOLD, AUTO_CODER_CORPUS_DEFAULT_CATEGORIES) provide zero-touch overrides. Adjust the deduplication threshold closer to 1.0 to suppress near-identical payloads, or omit it entirely to capture every event.
pytest
The automated suite exercises agent builders, schema utilities, speech interfaces, and integration helpers. Feel free to augment the suite when extending functionality.
Some retrieval flows leverage Playwright for deterministic rendering. After installing Python dependencies, add the browser binaries:
playwright install
This unlocks the Playwright-backed search pipeline in internal/web_playwright.py and internal/RAG.py.
Auto-Coder can treat Model Context Protocol (MCP) servers as first-class tools alongside local Python callables. The mcp_tooling module normalises configuration, launches command-based servers, and registers remote/local descriptors with the default ToolRegistry so that every entry serialises to {"type": "mcp", ...} during model.act calls.
mcp_servers section of your config.json. Override the config path with the MCP_CONFIG_PATH environment variable when running custom deployments.AgentBuilder.with_mcp_servers() to inject MCP descriptors (raw mappings, MCPServerConfig, or MCPServerSpec instances) before calling .build(). The builder defers to register_mcp_servers() under the hood, ensuring deduplication and seamless mixing with callable tools.MCPServerRegistry and CommandServerLifecycle manage validation and command lifecycle (stdout readiness patterns, probe URLs, graceful shutdown signals, etc.).Local HTTP server
{
"mcp_servers": {
"filesystem": {
"type": "local",
"url": "http://127.0.0.1:3030",
"allowed_tools": ["fs.read", "fs.write"],
"headers": {"Authorization": "Bearer local-token"}
}
}
}
Remote HTTPS server
{
"mcp_servers": {
"knowledge-base": {
"type": "remote",
"url": "https://mcp.example.com/api",
"verify_tls": false,
"allowed_tools": ["search", "summarize"],
"metadata": {"tier": "beta"}
}
}
}
Command-launched server
{
"mcp_servers": {
"git-helper": {
"type": "command",
"command": ["python", "-m", "git_mcp"],
"env": {"MCP_API_KEY": "${GIT_MCP_TOKEN}"},
"cwd": "/srv/mcp/git",
"ready_pattern": "Server ready",
"ready_timeout": 15,
"ready_probe_url": "http://127.0.0.1:4040/health",
"shutdown_command": ["python", "-m", "git_mcp", "--shutdown"],
"shutdown_signal": 15,
"capture_output": true
}
}
}
Each descriptor supports optional allowed_tools, headers, and metadata fields in addition to lifecycle controls such as ready_pattern, ready_timeout, and graceful shutdown commands or signals. When combined with callable tools, the registry keeps payload ordering intact so mixed tool sets continue to serialise without regression.
The docs/ directory houses three complementary knowledge bases:
docs/autocoder – Deep dive into this repository's layout, runtime architecture, agent catalogue, and tests.docs/LMStudio – Tutorials, SDK guides, and API references for LM Studio.docs/LMF2 – Model cards and usage notes for the Liquid LMF2 family.A curated overview is available in docs/README.md.
pytest.When proposing agent or tooling updates, include documentation changes so the knowledge base stays authoritative.
Happy building! 🚀
This project is licensed under the Mozilla Public License 2.0.
194 commits
Python
100.0%
Auto-Coder is a multi-agent development companion that coordinates code generation, documentation, testing, and research tasks through LM Studio powered large language models.
Auto-Coder orchestrates a suite of specialised agents—coding, documentation, dependency management, research, testing, and more—to automate the day-to-day workflows of shipping software. Each agent collaborates through a shared session layer backed by LM Studio's chat runtime, enabling the system to draft plans, execute tool calls, apply diffs, and validate outcomes with minimal human guidance.
The repository includes:
lmstudio Python SDK for chat completions, streaming responses, and schema-constrained outputs.ToolRegistry makes it trivial to register Python callables as LM Studio tools, complete with discovery helpers for module or package scans.| Layer | Responsibilities | Key Modules |
|---|---|---|
| Session & Chat | Normalise prompts, stream responses, and manage message history while enforcing optional schemas. | chat.py, session.py |
| Orchestration | Build multi-agent workflows, surface live status updates, and coordinate retries or plan execution. | main.py, agents/manager.py |
| Specialised Agents | Apply diffs, generate docs, run tests, manage dependencies, perform research, and more. | agents/ |
| Tooling | Register reusable tools, expose safe file/process utilities, and integrate with git/patch flows. | tooling.py, internal/tools |
| Retrieval & Utilities | Provide repository-aware RAG, structured responses, and speech utilities for future integrations. | internal/RAG.py, internal/schemas.py, internal/TTS.py |
Dive deeper with the Auto-Coder documentation set for module-by-module references.
# Clone the repository
git clone https://github.com/hackall360/auto-coder.git
cd auto-coder
# Create and activate a virtual environment
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# Install Python dependencies
pip install -r requirements.txt
python main.py --config path/to/config.json --default-model anthropic/claude-3-sonnet
Run the command from the repository root to launch the Textual-powered interface. The entry point honours every shared flag defined in cli/overrides.py, so you can pass model overrides, repository indexing preferences, memory settings, and MCP options directly on the command line. Existing automation that shells into python TUI.py continues to work and boots the same UI when you prefer the module-level target.
To capture structured corpus events during a session, enable the new corpus pipeline on the CLI:
python main.py --config path/to/config.json --enable-corpus --corpus-path ~/.autocoder/corpus/events.jsonl
Complementary flags let you disable capture (--disable-corpus), tune the similarity filter (--corpus-dedup-threshold 0.7), or override event categories (--corpus-category web_search=research).
Logging defaults to structured JSON at the INFO level. Use the new verbosity flags to adjust output without editing environment variables:
--verbose raises the root logger to DEBUG.--quiet drops it to WARNING.--log-level LEVEL accepts any standard logging level name (or numeric value) and takes precedence over the AUTO_CODER_LOG_LEVEL environment variable.Handler-specific environment overrides such as AUTO_CODER_CONSOLE_LEVEL, AUTO_CODER_FILE_LEVEL, and AUTO_CODER_LOG_FILE continue to work alongside the CLI flags, so you can still direct logs to files or adjust per-handler verbosity when required.

Auto-Coder now launches its Textual terminal interface by default. The UI layers a live plan tracker, transcript, and status feeds on top of the manager runtime so you can monitor each agent while a request runs.
pip install -r requirements.txt. If you only need the Text UI, install textual>=0.56.4 and rich>=13.7 alongside the base prerequisites listed above.config.json when you want the UI to orchestrate live agent runs.python main.py --config path/to/config.json --repo-refresh-interval 120
main.py directly boots the Textual UI and accepts the full suite of shared flags (model overrides, repository indexing controls, memory settings, MCP startup options, and more). If you prefer calling the UI module explicitly, python TUI.py remains supported and recognises the exact same arguments.
/cancel and /quit helpers for graceful shutdowns.TERM=xterm-256color or switch to a terminal emulator with true-colour support.pip install textual>=0.56.4 rich>=13.7 or reinstall using the full requirements.txt to pick up Rich and Textual dependencies.Ctrl+C; press Esc followed by /quit to exit safely.agents/repo_context.py helpers with up-to-date repository information for best results.AgentBuilder.with_tools() or register_default_toolset().core.research section in config.json or the AUTO_CODER_RESEARCH_* environment variables to adjust WebRAG proxies, caching, and anonymous browsing defaults.Override the defaults for the built-in research agent by extending the
core.research section of your config.json. Cache-related knobs control how
many queries and snippets remain in memory, while the nested web mapping is
forwarded directly to the underlying web retriever:
{
"core": {
"research": {
"cache_size": 16,
"cache_top_k": 12,
"max_quote_chars": 480,
"web": {
"proxy": "http://127.0.0.1:8080",
"user_agent_pool": ["Mozilla/5.0", "Brave/1.64"],
"incognito_contexts": true,
"anonymous_browsing": false
}
}
}
}
Environment variables such as AUTO_CODER_RESEARCH_USER_AGENT_POOL (comma
separated) or AUTO_CODER_RESEARCH_PROXY provide quick overrides without
editing the file. If anonymous_browsing is omitted, Auto-Coder assumes the
inverse of core.models.allow_external_browsing, matching previous releases.
Override the manager's planning behaviour by extending the core.manager
section of your config.json. The example below increases plan retries, allows
tasks to retry twice, and injects a bespoke documentation blueprint:
{
"core": {
"manager": {
"plan_retries": 2,
"task_retry_limit": 2,
"specialist_blueprints": [
{
"name": "release-notes",
"kind": "documentation",
"agent": "documentation",
"keywords": ["release", "changelog"],
"budget": {"limit": 2, "unit": "rounds"},
"research": {"required": true, "audience": "docs"}
}
]
}
}
}
The override is optional—Auto-Coder keeps its default blueprint catalogue and single-attempt planning unless this section is provided.
Corpus capture is disabled by default so development sessions remain ephemeral. Enable it by extending the core.corpus section of your configuration or by supplying the new CLI flags described earlier:
{
"core": {
"corpus": {
"enabled": true,
"storage_path": "~/autocoder/corpus/events.jsonl",
"dedup_threshold": 0.7,
"default_categories": {
"web_search": "research",
"file_write": "repo_activity"
}
}
}
}
Auto-Coder will instantiate a shared CorpusManager, persist events to long-term memory, and append JSONL entries to the configured storage_path. Environment variables (AUTO_CODER_CORPUS_ENABLED, AUTO_CODER_CORPUS_PATH, AUTO_CODER_CORPUS_DEDUP_THRESHOLD, AUTO_CODER_CORPUS_DEFAULT_CATEGORIES) provide zero-touch overrides. Adjust the deduplication threshold closer to 1.0 to suppress near-identical payloads, or omit it entirely to capture every event.
pytest
The automated suite exercises agent builders, schema utilities, speech interfaces, and integration helpers. Feel free to augment the suite when extending functionality.
Some retrieval flows leverage Playwright for deterministic rendering. After installing Python dependencies, add the browser binaries:
playwright install
This unlocks the Playwright-backed search pipeline in internal/web_playwright.py and internal/RAG.py.
Auto-Coder can treat Model Context Protocol (MCP) servers as first-class tools alongside local Python callables. The mcp_tooling module normalises configuration, launches command-based servers, and registers remote/local descriptors with the default ToolRegistry so that every entry serialises to {"type": "mcp", ...} during model.act calls.
mcp_servers section of your config.json. Override the config path with the MCP_CONFIG_PATH environment variable when running custom deployments.AgentBuilder.with_mcp_servers() to inject MCP descriptors (raw mappings, MCPServerConfig, or MCPServerSpec instances) before calling .build(). The builder defers to register_mcp_servers() under the hood, ensuring deduplication and seamless mixing with callable tools.MCPServerRegistry and CommandServerLifecycle manage validation and command lifecycle (stdout readiness patterns, probe URLs, graceful shutdown signals, etc.).Local HTTP server
{
"mcp_servers": {
"filesystem": {
"type": "local",
"url": "http://127.0.0.1:3030",
"allowed_tools": ["fs.read", "fs.write"],
"headers": {"Authorization": "Bearer local-token"}
}
}
}
Remote HTTPS server
{
"mcp_servers": {
"knowledge-base": {
"type": "remote",
"url": "https://mcp.example.com/api",
"verify_tls": false,
"allowed_tools": ["search", "summarize"],
"metadata": {"tier": "beta"}
}
}
}
Command-launched server
{
"mcp_servers": {
"git-helper": {
"type": "command",
"command": ["python", "-m", "git_mcp"],
"env": {"MCP_API_KEY": "${GIT_MCP_TOKEN}"},
"cwd": "/srv/mcp/git",
"ready_pattern": "Server ready",
"ready_timeout": 15,
"ready_probe_url": "http://127.0.0.1:4040/health",
"shutdown_command": ["python", "-m", "git_mcp", "--shutdown"],
"shutdown_signal": 15,
"capture_output": true
}
}
}
Each descriptor supports optional allowed_tools, headers, and metadata fields in addition to lifecycle controls such as ready_pattern, ready_timeout, and graceful shutdown commands or signals. When combined with callable tools, the registry keeps payload ordering intact so mixed tool sets continue to serialise without regression.
The docs/ directory houses three complementary knowledge bases:
docs/autocoder – Deep dive into this repository's layout, runtime architecture, agent catalogue, and tests.docs/LMStudio – Tutorials, SDK guides, and API references for LM Studio.docs/LMF2 – Model cards and usage notes for the Liquid LMF2 family.A curated overview is available in docs/README.md.
pytest.When proposing agent or tooling updates, include documentation changes so the knowledge base stays authoritative.
Happy building! 🚀
This project is licensed under the Mozilla Public License 2.0.
194 commits
Python
100.0%