Skip to content

MParvin/OctaAI

Repository files navigation

OctaAI - Autonomous Software Engineering Agent

OctaAI is an autonomous AI agent that can design, implement, test, deploy, and manage software projects end-to-end with minimal human intervention.

Features

  • 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

Architecture

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

Browser Automation

OctaAI can control a live Firefox browser through a companion extension, enabling web scraping, form automation, login flows, and multi-step web workflows.

Quick setup

  1. Build and start the daemon with browser support:
    ./bin/octa-agentd --browser-port 8765
  2. Load the Firefox extension from this repo:
    # In Firefox: about:debugging → Load Temporary Add-on
    # → plugins/firefox-addon/src/manifest.json
  3. Set a shared token in config.yaml and 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.

Quick Start

Prerequisites

  • Go 1.21+
  • Ollama (optional, for local models)

Installation

# Clone the repository
git clone https://github.com/mparvin/octaai.git
cd octaai

# Build the project
make build

# Or install directly
make install

Configuration

Create 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 /"

Usage

Start the Agent Daemon

octa-agentd

Submit a Goal (Example: LocalWeather Project)

octa-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"

Check Goal Status

octa-agent status

Example: Remote Server Deployment

octa-agent goal "IP: 1.2.3.4, Username: root, Password: 123456. Setup nginx, deploy github.com/mparvin/ip9.git, configure SSL for ip9.com"

Project Structure

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

Development status

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 fallback
  • features.use_dag_executor — DAG scheduler for ready tasks
  • features.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.

Running in Docker (local-first)

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:8766

Health 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).

License

MIT License - See LICENSE file for details

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

About

An autonomous AI agent

Topics

Resources

License

Contributing

Security policy

Stars

6 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors