Self-hosted service
octos-org/octos avatar
octos-org/octos

Octos: A Rust-based agent runtime that puts multi-tenancy and pipelines at the center

Octos - Agentic Operating Systems. | The agent doesn't reply | No provider credential yet, run octos auth login provider (or export the provider's API key env var, or add the key in the dashboard settings).

1,040 stars84 forksRustApache-2.0

At a glance

What is it?
Octos is a 31MB Rust binary that runs AI agents locally with multi-tenant isolation, DOT-defined pipelines, and a JSON-RPC protocol for custom frontends. The trade-off is operational complexity: you manage providers, ports, and processes yourself.
Who is it for?
Adopt Octos if you need a self-hosted agent platform that serves multiple users or profiles from one binary, and if you are comfortable with REST APIs and process-level isolation. Skip it if you want a single-user chat assistant with zero configuration, or if you cannot tolerate debugging provider credential and model name mismatches.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly Rust, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 14, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What Octos actually is

Octos is not another chatbot wrapper. The README describes it as an API-first Agentic OS, and the repository layout supports that claim. The core repo, octos, is the kernel: agent runtime, LLM providers, tools, sandbox, memory, channels, and the API. Separate companion repos, octos-web and octoscode, provide a browser UI and a terminal client. The kernel ships as a single 31MB static binary with 80+ REST endpoints and a WebSocket/stdio protocol called UI Protocol v1. The target user is someone who wants to run an AI agent platform on their own hardware, not someone who wants a one-command personal assistant. The README's own quick start is short, but the real value is in the control plane: profiles, sessions, tools, and multi-user isolation managed through one API.

How the runtime is structured

The central design choice is multi-tenancy at the process level. Each profile runs as a separate OS process with isolated memory, sessions, and data. One 31MB binary can serve 200+ profiles on a 16GB machine, according to the README. That is a different model from most agent frameworks, which keep all conversations in a single process with logical separation. Octos also defines agent topologies beyond the simple single-agent loop. Sub-agents are in-process children you own. Peer agents are sovereign sibling sessions that communicate via peer_handoff and peer_gather. A swarm dispatcher at /api/swarm/dispatch fans out contracts to N workers, which can be native or external commands like claude -p or codex exec, with validator gating and cost rollup. This is not a toy. The architecture anticipates production workloads with multiple concurrent agents.

The pipeline mechanism: DOT graphs with per-node models

A distinctive feature is the multi-LLM DOT pipeline. Workflows are defined as DOT graphs, and each node can specify its own model. The README mentions dynamic parallel fan-out that spawns N concurrent workers at runtime, with bounded concurrency to keep the fleet stable. This is a concrete mechanism: you describe a graph, Octos executes it, and you can mix providers or models within a single workflow. The trade-off is that you must learn DOT syntax and think in graph terms. For a simple linear chain, a script might be easier. But for branching or parallel tasks, the graph approach gives you explicit control over where each model is used. The README does not provide a sample DOT file, so you would need to consult the documentation to see the exact syntax.

Getting it running: commands and configuration

The quick start is straightforward. Install via Homebrew with brew tap octos-org/octos and brew install octos-org/octos/octos, or via npm with npm install -g @octos-org/octos. Then run octos init to choose a provider and model. The README warns that some providers reject the auto default model name, so you must pick a real one. Next, octos auth login --provider deepseek signs you in, or you can export an API key environment variable. Finally, octos serve --solo starts a local server on port 50080. The dashboard is at http://localhost:50080/app/. There is also an installer script for a background service on port 8080: curl -fsSL https://github.com/octos-org/octos/releases/latest/download/install.sh | bash. Diagnostic commands exist: octos status shows what is running, and octos doctor checks your environment. That is a complete setup path, but note that the README does not cover self-hosted cloud deployment details; those live in the octos-web repo.

Where it can fail: credentials, models, and ports

The README includes a troubleshooting table, which is honest about common failure modes. The most likely issue is that the agent does not reply because no provider credential has been set. The fix is to run octos auth login --provider <name>, export the API key, or add it in the dashboard. Another failure is an invalid model error, meaning the provider rejected the configured model name. The README suggests re-running octos init and picking a real model like deepseek-v4-flash. There is also a port confusion risk: solo serve uses 50080, while the service installer uses 8080. If the page does not load, you might be checking the wrong port. These are not hypothetical edge cases; they are the first things the project expects you to hit. For a non-expert, this could be a barrier. The project assumes you can read a terminal error and act on it.

Provider and channel coverage: breadth with caveats

Octos claims 16 LLM providers and 14 messaging channels. Providers include Anthropic, OpenAI, Gemini, and DeepSeek, among others. Channels include Telegram, Discord, Slack, WhatsApp, DingTalk, Matrix, and Feishu. The breadth is real, but the README gives no per-provider or per-channel configuration details. You have to assume that each integration has its own quirks. The 3-layer provider failover mechanism (RetryProvider, ProviderChain, AdaptiveRouter) suggests that Octos is built for reliability, with hedge racing, lane scoring, and circuit breakers. That is a sophisticated approach, but it also means more moving parts to misconfigure. The README does not explain how to tune these layers. If you rely on a single provider, the failover complexity may be unnecessary. If you need multi-provider resilience, this is a strong feature, but you will need to read the full documentation to use it properly.

Alternatives and the maintenance picture

The closest alternative is a single-tenant agent framework like Claude Code or a self-hosted chatbot stack built on LangChain. The difference is architectural: those are single-user, single-session tools. Octos is multi-tenant by design, with profiles as separate processes. If you only need one assistant for yourself, Claude Code is simpler and has a mature terminal experience. If you need to serve multiple users or run complex pipelines, Octos offers a more structured platform. On maintenance, the project is under active development, with recent release candidates (v2.0.3-rc.9) and a last push in August 2026. The Apache-2.0 license is permissive, but you must track releases and test upgrades. The README does not mention a migration path between versions. The reliance on external provider APIs means you must stay current with model names and provider changes. The process-per-profile model also implies memory overhead; 200 profiles on 16GB is a claim, not a guarantee, and you should test your own workload.

Who should adopt it and what to verify first

Octos fits a developer or small team that wants to run their own agent backend with multiple users or roles, and who is comfortable with REST APIs and process management. It is wrong for someone who wants a zero-config personal assistant or who cannot handle debugging provider credentials. Before adopting, verify that your provider is in the 16 supported, test the DOT pipeline syntax with a simple graph, and confirm that the 31MB binary's resource usage matches your machine. Also check the octos-web repo for the self-hosting guide, since the kernel alone does not include deployment instructions for cloud setups. The project is young, with release candidates, so expect breaking changes between versions. The core value is real: a multi-tenant, API-first agent runtime in a single binary. Whether that value outweighs the operational overhead depends on your willingness to live in the terminal and read error messages.

Editorial conclusion

Adopt Octos if you need a self-hosted agent platform that serves multiple users or profiles from one binary, and if you are comfortable with REST APIs and process-level isolation. Skip it if you want a single-user chat assistant with zero configuration, or if you cannot tolerate debugging provider credential and model name mismatches. Before committing, verify that your chosen LLM provider is among the 16 supported, test the DOT pipeline syntax against your workflow, and check whether the 31MB binary's process-per-profile model fits your memory budget on a 16GB machine.

Official sources

  1. Official README
  2. Project repository
  3. Release notes
Community notes

Community notes