OctaAI is an autonomous AI agent that can design, implement, test, deploy, and manage software projects end-to-end with minimal human intervention.
- Autonomous Planning & Execution: Takes high-level prompts and breaks them into actionable tasks
- Multi-LLM Support: Works with OpenAI, Claude, and Ollama (local models)
- Code Generation & Self-Repair: Generates code, runs tests, and fixes errors automatically
- Remote Server Management: SSH into servers, install packages, configure services
- Deployment Automation: Deploy applications, configure Nginx, setup SSL certificates
- Browser Automation: Control a live Firefox browser — navigate, fill forms, extract data, and automate web workflows via a companion extension
- Safety First: Configurable allowed paths and command filtering
octa-agentd (Daemon - Agent Runtime)
|
+-- LLM Provider Layer (OpenAI/Claude/Ollama)
+-- Tool Registry
+-- Filesystem Tools
+-- Code Execution Tools
+-- Git Tools
+-- SSH Tools
+-- HTTP Tools
+-- Browser Tools ←── WebSocket ──► Firefox Extension
OctaAI can control a live Firefox browser through a companion extension, enabling web scraping, form automation, login flows, and multi-step web workflows.
- Build and start the daemon with browser support:
./bin/octa-agentd --browser-port 8765
- Load the Firefox extension from this repo:
# In Firefox: about:debugging → Load Temporary Add-on # → plugins/firefox-addon/src/manifest.json
- Set a shared token in
config.yamland in the extension Settings (Server URL:ws://localhost:8765/ws).
See docs/BROWSER_AUTOMATION.md for the full setup guide and examples/browser/ for usage examples.
- Go 1.21+
- Ollama (optional, for local models)
# Clone the repository
git clone https://github.com/mparvin/octaai.git
cd octaai
# Build the project
make build
# Or install directly
make installCreate a configuration file at ~/.config/octaai/config.yaml:
projects_root: "/home/user/Projects"
llm:
provider: "ollama"
model: "qwen2.5:32b"
base_url: "http://localhost:11434"
temperature: 0.3
safety:
allow_paths:
- "/home/user/Projects"
deny_commands:
- "rm -rf /"octa-agentdocta-agent goal "Write a python script that gives weather data about all countries in Europe, store in redis, create a Flask site, name it LocalWeather"octa-agent statusocta-agent goal "IP: 1.2.3.4, Username: root, Password: 123456. Setup nginx, deploy github.com/mparvin/ip9.git, configure SSL for ip9.com"octaai/
├── cmd/
│ ├── octa-agentd/ # Agent daemon
│ └── octa-agent/ # CLI client
├── pkg/
│ ├── agent/ # Core agent logic
│ ├── config/ # Configuration
│ ├── llm/ # LLM provider abstraction
│ ├── storage/ # State persistence
│ └── tools/ # Tool implementations
├── examples/ # Example workflows
└── docs/ # Documentation
Core daemon + CLI, tools, permissions, Docker isolation, browser automation, and TF-IDF memory are production-usable.
Optional v2 flags (off by default):
features.use_htn_planner— HTN planning with v1 fallbackfeatures.use_dag_executor— DAG scheduler for ready tasksfeatures.use_capabilities— builtin capability registry
Still unimplemented: enable_ag2, use_vector_memory, enable_mcp, enable_adaptive_replan, enable_reflection.
See docs/ARCHITECTURE.md, docs/GETTING_STARTED.md, and IMPLEMENTATION_LOG.md.
OctaAI is intentionally local-first — there is no Helm/Terraform/K8s chart. The multi-stage Dockerfile builds both binaries and runs as non-root user octa.
docker build -t octaai .
docker run --rm -v "$HOME/.config/octaai:/home/octa/.config/octaai" \
-p 8766:8766 octaai --health-addr 0.0.0.0:8766Health endpoints: GET /healthz (liveness), GET /readyz (readiness). Disable with --health-addr="".
For tool isolation inside goals, enable isolation.enabled / Docker sandbox in config (separate from running the daemon itself in a container).
MIT License - See LICENSE file for details
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.