Clean brain. Thinking tentacles. Life finds a way.
Octopus borrows one architectural idea from octopus arms: control can stay close to the environment. This is an agent kernel. The main brain keeps Goal, memory, Need, and Feed clean; each tool-side tentacle carries its own LLM prompt, runtime metadata, permissions, Go packages, session code, and trajectory.
Goal -> Brain -> Need -> Tentacle intelligence -> Go action -> Feed -> Brain
Heartbeat -> trajectory -> memory beat / harness beat
curl -fsSL https://dangozhang.github.io/Octopus/install.sh | sh
octopus oauth login codex
octopus start --check
octopus pet desktopoctopus oauth login codex reuses an existing Codex OAuth session when available, then prepares .octopus/llm.env; if no session exists, it falls back to Codex login. start --check must pass a live model probe before Octopus runs. The desktop pet reads real state only: Need, action, Feed, memory, harness evolution, and blocked status.
Open the desktop pet, type a Goal, then choose Snowball to continue from the current Goal or Replace to start fresh. The brain emits a Need. The tentacle writes and runs session Go code, verifies the result, and returns a compact Feed. Repeated behavior moves into reusable Go packages.
0.3.0 pins tentacle execution to Go. Rust keeps the core loop and boundary. Editable harness code lives under tentacles/field-mini-task/: internal/fieldworker/common owns Task/Feed artifacts, each field owns its reusable Go package, and each run writes session Go source under .octopus-runtime/. The bundled fields are filesystem seed data, not a Rust enum or a closed list; a tentacle can add a new field pack and Go package from trace evidence.
The public path is Codex OAuth, local runtime check, desktop pet observation, LLM-planned Go execution, Feed trace recording, and LLM-selected Go package evolution.
MIT.