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 · 简体中文
LLM-powered conversation summarisation — turn long OCTO threads, group chats, and meeting transcripts into scannable briefs.
octo-smart-summary is a small Go service that wraps an OpenAI-compatible
LLM endpoint behind a narrow, OCTO-aware API. Given a conversation id
(octo-server channel / thread / meeting), it produces a structured summary
with key decisions, unanswered questions, and follow-up candidates — ready
to hand off to octo-matter as draft todos.
- Narrow service, clean contract. Only four endpoints (
/summarise,/summarise/stream,/healthz,/metrics). No user state, no side effects beyond LLM calls and per-request tracing — easy to operate, easy to swap. - Bring your own LLM. The LLM URL is a configurable
LLM_API_URL; point it at any OpenAI-compatible endpoint (self-hosted vLLM / Ollama / Claude gateway / commercial API). No vendor lock-in. - Structured output, not prose dump. Results are strict JSON (highlights, decisions, open questions, candidate actions) so downstream consumers —
octo-web,octo-matter, Lobster agents — can render them natively instead of re-parsing free text.
git clone https://github.com/Mininglamp-OSS/octo-smart-summary.git
cd octo-smart-summary
go build ./cmd
# minimal config via env
export LLM_API_URL=https://api.example.com/v1
export LLM_API_KEY=sk-your-key-here
export SUMMARY_LISTEN_ADDR=:8090
./cmd serveThen, from another terminal:
curl -X POST http://localhost:8090/summarise \
-H 'Content-Type: application/json' \
-d '{"conversation_id": "channel:demo", "style": "brief"}'Top-level packages:
| Path | Purpose |
|---|---|
cmd/ |
Service entrypoint + subcommands |
internal/config/ |
Env-driven config (LLM endpoint, rate limits, listen address) |
internal/handler/ |
HTTP handlers — /summarise, /summarise/stream, /healthz, /metrics |
internal/service/ |
Summarisation pipeline (fetch transcript → chunk → prompt → parse → enrich) |
internal/llm/ |
LLM client — OpenAI-compatible /v1/chat/completions + streaming |
internal/octo/ |
Thin client for octo-server — fetches the conversation transcript behind a scoped token |
internal/middleware/ |
Auth, rate-limit, logging, tracing |
internal/model/ |
Request / response structs (SummaryRequest, SummaryResult) |
Summary pipeline per request:
- Resolve the conversation id against
octo-server(scoped to the requesting operator). - Chunk the transcript into LLM-sized windows; preserve speaker / time boundaries.
- Prompt the LLM with a summariser template (brief / standard / decision-log modes).
- Parse the structured output; reject and re-prompt once if JSON validation fails.
- Enrich with conversation metadata (participants, duration) and return.
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]
Summary[octo-smart-summary<br/>AI Summary]
Admin[octo-admin<br/>Admin Console]
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
Admin --> Server
Server --> Matter
Server --> Summary
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-smart-summary |
Go | LLM-powered conversation summarisation |
octo-web |
TypeScript / React | Web & PC (Electron) client |
octo-android |
Kotlin / Java | Native Android client |
octo-ios |
Swift / Objective-C | Native iOS client |
octo-admin |
TypeScript / React | Admin console (tenant / org / user / channel management) |
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

