OCTO — the open workplace built for humans × AI agents.
Let Lobsters (OpenClaw-powered digital doubles) do the thinking and doing. You focus on taste.
🏠 OCTO Home · 🚀 Quickstart · 📦 Ecosystem · 🤝 Contributing
🌐 Read in: English · 简体中文
Lightweight task / todo / "matter" service — the generalised action-item primitive used by OCTO clients and Lobster agents.
octo-matter is a focused Go service that manages matters — a generalised
task / todo / action-item primitive used by the OCTO clients and by Lobster
agents. It exposes a REST API for create / update / assign / close, plus a
timeline sub-service that records activity against each matter (comments,
status changes, LLM-extracted follow-ups).
- Task + timeline in one service. Every matter owns its own append-only activity stream, so "what happened to this task?" is a single database query, not a stitched reconstruction across four microservices.
- Turn chat into structured work. A pluggable LLM extractor turns free-form text (chat snippets, meeting notes) into structured matter drafts — Lobster agents can surface candidate todos with one call.
- Notifier-abstracted. Ships with a first-class
octo-serverIM notifier and a generic HTTP-webhook sink, so matter events fan out to wherever the team already is.
git clone https://github.com/Mininglamp-OSS/octo-matter.git
cd octo-matter
go build -o octo-matter ./cmd
# configure via env vars (see internal/config/config.go for the full list)
export LLM_API_URL=https://api.example.com/v1
export OCTO_LLM_PROVIDER=compat # compat, openai, or anthropic
export MYSQL_DSN='user:pass@tcp(127.0.0.1:3306)/matter?parseTime=true'
./octo-matterMinimal external dependencies — MySQL + an LLM endpoint
LLM providers:
compat(default): OpenAI-compatible/v1/chat/completions; setLLM_API_URLto the gateway's/v1base.openai: OpenAI official Go SDK; setLLM_API_URL=https://api.openai.com/v1.anthropic: Anthropic official Go SDK; setLLM_API_URL=https://api.anthropic.com(a trailing/v1is tolerated).
Top-level packages under this module:
| Path | Purpose |
|---|---|
cmd/ |
Service entrypoint + timeline transaction helper |
internal/config/ |
Env-driven config loader |
internal/handler/ |
HTTP handlers (matter, timeline, activity, extract) |
internal/service/ |
Business logic (access control, LLM extraction, timeline) |
internal/repository/ |
MySQL repositories for matters, assignees, channels, timelines |
internal/llm/ |
LLM clients — OpenAI-compatible gateway plus official OpenAI / Anthropic SDK providers |
internal/notification/ |
Notifier interface + OCTO-IM implementation |
internal/apperr/ |
Typed application errors |
internal/model/ |
Shared data models |
internal/middleware/ |
Auth / logging / recovery middleware |
migrations/ |
SQL schema migrations |
Request lifecycle:
- Ingest — either a human
POST /matterscall, or an/extractcall with free-form text. - Access-control — per-org + per-channel visibility rules.
- Persist — matter row + initial timeline record in one transaction.
- Notify — push an event via the configured
Notifier(OCTO IM, webhook, or both). - Loop — subsequent updates append to the same timeline, giving a complete audit trail.
graph TD
subgraph Clients[Clients]
Web[octo-web<br/>Web / PC]
Android[octo-android<br/>Android]
iOS[octo-ios<br/>iOS]
end
subgraph Core[Core Services]
Server[octo-server<br/>Backend API]
Matter[octo-matter<br/>Task / Todo]
IM[WuKongIM<br/>IM Engine]
end
subgraph Shared[Shared Libraries & Integrations]
Lib[octo-lib<br/>Core Go Library]
Adapters[octo-adapters<br/>Third-party Adapters]
end
Web --> Server
Android --> Server
iOS --> Server
Server --> Matter
Server --> IM
Server --> Adapters
Server -.uses.-> Lib
Matter -.uses.-> Lib
Adapters -.uses.-> Lib
| Repository | Language | Role |
|---|---|---|
octo-server |
Go | Backend API · business orchestration · Lobster agent scheduling |
octo-matter |
Go | Task / Todo / Matter micro-service |
octo-daemon-cli |
Go | Ops & onboarding CLI, local daemon |
octo-web |
TypeScript / React | Web & PC (Electron) client |
octo-android |
Kotlin / Java | Native Android client |
octo-ios |
Swift / Objective-C | Native iOS client |
WuKongIM |
Go | IM engine (fork, enhanced for OCTO) |
octo-lib |
Go | Shared core library (protocol, crypto, storage, HTTP) |
octo-adapters |
TypeScript / Python | Third-party integrations (IM bridges, AI channels) |
OCTO ships under three shared principles that apply to every repository in this matrix:
- Local-first. Anything that can run on the user's own box — chats, embeddings, agents — should. Your data stays yours; cloud is a choice, not a requirement.
- Humans judge, AI thinks and acts. Humans focus on taste (what matters, what's right, what to ship). Lobster agents — OpenClaw-powered digital doubles — carry the thinking and execution load.
- Release-as-product. Every open-source cut is shipped as a self-contained product, not a code dump: one squash per release, Apache 2.0, no internal baggage, reproducible from this repo alone.
We love pull requests! Before you open one, please read:
- CONTRIBUTING.md — workflow, branch model, commit style
- CODE_OF_CONDUCT.md — community expectations
For security issues please follow SECURITY.md instead of the public tracker.
Apache License 2.0 — see LICENSE for the full text and NOTICE for third-party attributions.
Made with 🐙 by OCTO Contributors · Mininglamp-OSS