# OpenACM — Open Autonomous Agent
**OpenACM** is a self-hosted autonomous AI agent that runs on your PC or server. It controls your local environment, writes and executes code, navigates the web, runs specialized agents on Telegram/WhatsApp, and connects to any MCP server — all through a modern web dashboard.
No subscriptions. No cloud dependency. Your data stays local.
> Created and maintained by [Jeison Hernandez](https://github.com/Json55Hdz) / JsonProductions.
> If you use or build on OpenACM, a credit or a star goes a long way.
---
## What it can do
- **Run commands & code** — executes shell commands (sandboxed, with confirmation modes) and stateful Python (Jupyter kernel)
- **Browse the web** — Playwright-powered browser automation: login, scrape, screenshot
- **Edit code surgically** — `edit_file`, `grep_in_files`, `get_file_outline`, `run_linter`
- **MCP Server support** — connect to any [Model Context Protocol](https://modelcontextprotocol.io) server (stdio, SSE or streamable HTTP)
- **Multi-channel** — chat via Web, Console, Telegram, Discord or WhatsApp (official Meta Cloud API), all sharing the same AI brain
- **Agents** — specialized assistants with their own prompt, tool allowlist, knowledge base, memory policy and their own Telegram / WhatsApp channels
- **Visual flows** — build agent automations in a node editor (HTTP, conditionals, loops, WooCommerce, variables) or let the AI build them from chat
- **Webhook connectors** — expose a flow as a public, signed webhook (`/api/webhooks/{slug}`) for payment providers, CRMs and form backends
- **Swarms** — multi-agent teams that plan and execute complex projects in parallel
- **Cron scheduler** — recurring jobs (skills, routines, shell commands, swarm templates)
- **Skills system** — Markdown-based behavior instructions injected when relevant
- **RAG memory** — ChromaDB long-term memory that persists across conversations, plus Code Resurrection (index your old projects)
- **Plugins** — built-in Gmail Classifier, Home Assistant and Content Automation plugins; write your own with a small Python API
- **Voice** — optional always-on voice daemon (faster-whisper STT + TTS) and in-browser TTS
- **Local intent router** — hybrid local/cloud architecture that skips the LLM for simple commands (~5ms, no tokens spent)
- **Loop trace debugger** — inspect every iteration: context size, tool calls, LLM timing, truncations
---
## Quick Start
### Option A — npm (recommended)
Requires Node.js 18+ and git.
```bash
npm i -g open-acm
openacm install # clones the repo into ~/OpenACM and runs full setup
openacm start # launch OpenACM
```
Or without installing globally:
```bash
npx open-acm install
npx open-acm start
```
**CLI commands:** `install` · `start` · `stop` · `status` · `update` · `repair` · `uninstall`
Set `OPENACM_DIR=/custom/path` to install somewhere other than `~/OpenACM`.
---
### Option B — One-liner
**Linux / macOS:**
```bash
curl -fsSL https://raw.githubusercontent.com/Json55Hdz/OpenACM/main/install.sh | bash
```
**Windows (PowerShell as Administrator):**
```powershell
iwr -useb https://raw.githubusercontent.com/Json55Hdz/OpenACM/main/install.ps1 | iex
```
---
### Option C — Manual clone
#### Prerequisites
- **Python 3.12+** (the setup script installs it through `uv` if needed)
- **Node.js 20+** (needed to build the dashboard)
- **RAM**:
- **Windows**: 8 GB minimum (Windows itself uses ~4 GB at idle + OpenACM ~1.8 GB).
- **Linux / VPS**: 3 GB minimum, 4 GB or more recommended.
- **CPU**: 2 cores minimum, 3 or more recommended for high concurrency.
- An API key from any supported LLM provider (or a local Ollama / CLI provider)
#### Windows
```powershell
git clone https://github.com/Json55Hdz/OpenACM.git
cd OpenACM
.\setup.bat # first time: installs everything and launches OpenACM
```
Next time just run:
```powershell
.\run.bat
```
#### Linux / macOS
```bash
git clone https://github.com/Json55Hdz/OpenACM.git
cd OpenACM
chmod +x setup.sh run.sh update.sh acm.sh
./setup.sh # first time: installs everything and launches OpenACM
```
Next time just run:
```bash
./run.sh # or: ./acm.sh start
```
To update later: `./update.sh` (or `update.bat` on Windows, or `openacm update`).
### Docker
The Compose file lives in `docker/` and publishes port **8080**. OpenACM listens on `127.0.0.1:47821` by default, so first tell it to listen on `0.0.0.0:8080` inside the container:
```bash
# config/local.yaml (mounted into the container)
cat > config/local.yaml <<'EOF'
web:
host: 0.0.0.0
port: 8080
EOF
docker compose -f docker/docker-compose.yml up -d --build
docker logs openacm # your dashboard token is printed here
```
Open `http://localhost:8080`, paste the token, done. See [docs/32-docker.md](docs/32-docker.md) for details.
---
## First Launch
1. The console prints your **Dashboard Token** — copy it (it is also saved as `DASHBOARD_TOKEN` in `config/.env`)
2. Open `http://127.0.0.1:47821`
3. Paste the token to log in
4. The onboarding wizard helps you pick an LLM provider and add your API key (you can also use **Configuration** later, or the terminal wizard `openacm-setup`)
---
## Supported LLM Providers
Uses [LiteLLM](https://github.com/BerriAI/litellm) internally. Built-in provider presets:
| Provider | Provider id | Example model | API key env var |
|---|---|---|---|
| OpenCode Go (default) | `opencode_go` | `kimi-k2.5` | `OPENCODE_GO_API_KEY` |
| OpenAI | `openai` | `gpt-4o` | `OPENAI_API_KEY` |
| Anthropic | `anthropic` | `claude-sonnet-4-20250514` | `ANTHROPIC_API_KEY` |
| Google Gemini | `gemini` | `gemini-2.5-flash` | `GEMINI_API_KEY` |
| xAI (Grok) | `xai` | `grok-4.20-0309-non-reasoning` | `XAI_API_KEY` |
| OpenRouter | `openrouter` | `openrouter/auto` | `OPENROUTER_API_KEY` |
| Ollama (local) | `ollama` | `llama3.2` | — |
| CLI providers | `cli_claude`, `cli_gemini`, `cli_opencode` | uses your logged-in CLI | — |
| Any OpenAI-compatible API | custom | configure a base URL in **Configuration → Custom Providers** | stored with the provider |
---
## MCP Servers
Connect to any MCP server from the **MCP** dashboard page (or ask the agent to do it with `add_mcp_server`):
| Mode | When to use |
|---|---|
| Streamable HTTP (`streamable_http`) | unity-mcp, most modern servers — just paste the URL |
| SSE (`sse`, legacy) | older SSE-based MCP servers |
| Local stdio (`stdio`) | run a local process (`npx @modelcontextprotocol/server-filesystem`, etc.) |
Once connected, the AI automatically sees and uses those tools (named `mcp__{server}__{tool}`).
---
## Dashboard
| Page | What it does |
|---|---|
| Dashboard | Real-time stats, token usage, activity, live events |
| Chat | Multi-channel conversations with tool call visibility, uploads and a per-conversation terminal |
| Swarms | Create, plan and monitor multi-agent swarms |
| Daemon | Voice daemon control (STT/TTS) |
| Routines | Patterns detected from your OS activity |
| Cron | Scheduled jobs and run history |
| Tools | Browse available tools and execution history |
| Skills | Create and manage Markdown-based AI skills |
| Agents | Agents, their channels, knowledge, skills and visual flows |
| MCP | Connect to external tool servers |
| Connectors | Webhook connectors and their activity log |
| Traces | Per-request debugger: context size, tool timings, errors |
| Configuration | LLM model, API keys, channels, memory, security, integrations |
| Plugins | Enable/disable and configure plugins (Gmail Classifier, Home Assistant, Content) |
---
## Project Structure
```
OpenACM/
├── frontend/ # Next.js dashboard (static export → src/openacm/web/static)
│ ├── app/ # Page routes
│ ├── components/ # UI components (incl. flow-editor)
│ ├── hooks/ # API and WebSocket hooks
│ └── stores/ # Zustand state
├── src/openacm/
│ ├── app.py # Startup orchestrator
│ ├── core/ # Brain, LLM router, memory, RAG, swarms, flows
│ ├── tools/ # Built-in tools + MCP client + registry
│ ├── channels/ # Telegram, Discord, WhatsApp (+ per-agent channels)
│ ├── plugins/ # Built-in plugins (gmail_classifier, home_assistant, content)
│ ├── watchers/ # Activity watcher, cron scheduler, code resurrection
│ ├── voice/ # Voice daemon + TTS providers
│ ├── cli/ # openacm-setup / openacm-manage
│ └── web/ # FastAPI server, routers, WebSockets
├── skills/ # Built-in skill definitions
├── config/ # default.yaml (committed) + local.yaml / .env (local, not committed)
├── docker/ # Dockerfile + docker-compose.yml
├── docs/ # Documentation
├── bin/openacm.js # npm CLI (open-acm)
├── setup.* / run.* / update.* / acm.* # Install / run / update scripts
└── install.sh / install.ps1 # Bootstrap installers
```
---
## Documentation
Full documentation lives in [`docs/`](docs/README.md) — getting started, architecture, tools, agents, flows, API reference, configuration, security, deployment and more.
---
## Privacy
OpenACM is fully self-hosted. The only outbound traffic is what you explicitly trigger:
- LLM API calls to the provider you configured
- Telegram/Discord/WhatsApp messages if you connect those channels
- Browser requests when you ask it to visit a site
- Integrations you configure (Google, Home Assistant, MCP servers, webhooks called from flows)
Everything else — conversations, API keys, files, memory — lives in `data/` and `config/` on your machine. Use Ollama for a fully offline setup.
---
## System Requirements
| | Minimum | Recommended |
|---|---|---|
| OS | Windows 10 / Ubuntu 22.04 / macOS 12 | Windows 11 / Ubuntu 24.04 |
| RAM | 8 GB (Windows) / 3 GB (Linux server) | 16 GB desktop / 4 GB+ server |
| CPU | 2 cores | 3+ cores |
| Storage | 5 GB | 20 GB |
| Python | 3.12+ | 3.12+ |
| Node.js | 20+ | 20+ |
---
## Contributing
Contributions are welcome. See [docs/CONTRIBUTING.md](docs/CONTRIBUTING.md).
---
## License
[MIT](LICENSE) — free to use, modify, and distribute.
Copyright (c) 2026 Jeison David Hernandez Pena (JsonProductions). All copies and derivatives must include the original copyright notice.