Octo Documentation
An AI-native, cloud-native integration platform you can run anywhere.
Octo is an integration platform built around a small, concurrent Go runtime that executes flows defined in YAML. Connectors turn the outside world into messages, sources feed those messages into flows, and each flow runs its messages through an ordered chain of blocks. Around the runtime sit a visual editor for designing flows and a Kubernetes-native platform for deploying and operating them.
Why Octo exists
AI moved the ceiling on what one person can build. Ideas that were once too ambitious for a personal project are suddenly within reach — and integration, the unglamorous work of making systems talk to each other, is exactly the kind of thing that used to be too big to take on alone.
So Octo asks a question: what would an integration platform look like if it were born today? AI-native from the first commit instead of retrofitted. Cloud-native by default instead of ported. Open in spirit, not just in license.
That means free in every sense. Free to run — no fee, no seat count, no license key, no call with sales. Free to learn from — the whole platform is on GitHub, and it is meant to be read. And free from the pressure that slowly bends a product away from its users: there are no paid cores, no enterprise tier, and no capability held back to give a commercial story something to sell. What is here is the whole thing.
Free as in freedom.
What that means in practice
Integration logic in Octo is declarative: you describe connectors, flows, and
processors in a readable YAML file, and the runtime carries it. The same file
runs unchanged from the octo CLI on your laptop, in the Docker-based visual
editor, and as a Kubernetes workload on the platform — development, testing, and
production share one definition. AI is a first-class building block: LLM
connectors, agents, AI-assisted mapping, and an MCP server for authoring flows
with an assistant are part of the runtime, not bolted on. Octo is open source
under the AGPL-3.0 license.
A flow in 30 seconds
A config declares connectors and flows. This one fires a cron source twice a minute and logs a greeting:
service:
name: hello-world
connectors:
- name: ticker
type: cron
flows:
- name: greet
source:
connector: ticker
type: cron
settings:
schedule: "0,30 * * * * *"
payload: '{"date": string(now)}'
process:
- type: log
settings:
message: '"hello world! the date is " + body.date'The source binds the flow to the ticker connector: a six-field cron schedule
fires at seconds 0 and 30 of every minute, and the payload CEL expression sets
each message's body. The process chain has a single log block whose
message is also a CEL expression, so it can read the message body. Run it with
octo run --config hello.yaml.
Explore the docs
Getting Started
Install the CLI, run your first flow, and pick between the CLI, the editor, and the platform.
Core Concepts
Flows, connectors, blocks, expressions, state, and error handling — the runtime model.
Guides
Task-oriented recipes: REST APIs, databases, scheduled jobs, Slack bots, and more.
Testing
Unit-test flows with dolphin: mock what calls the world, assert what happened, and run the same file in CI.
AI
LLM providers, agents, AI mapping and routing, and authoring flows over MCP.
Reference
The flow file schema, every connector and block, CEL functions, and the CLI.
Runtime
The processing pipeline, running locally, clustering, and monitoring.
Standalone Editor
The visual editor in Docker: design, save, and run flows against files on disk.
Platform
The multi-user control plane: integrations, deployments, secrets, and logs.
Deployment
Stand up the platform on Kubernetes with Docker images, Helm, and Terraform.
Octo is licensed under the AGPL-3.0 — see Licensing for what that means in practice.