LLM-powered conversation summarisation service for OCTO — turns group chats and threads into structured briefs with key decisions, open questions, and follow-up candidates. Supports any OpenAI-compatible LLM backend.
33
stars
118
commits
Go
primary language
Sep 10, 2026
updated
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.
/summarise, /summarise/stream, /healthz, /metrics). No user state, no side effects beyond LLM calls and per-request tracing — easy to operate, easy to swap.LLM_API_URL; point it at any OpenAI-compatible endpoint (self-hosted vLLM / Ollama / Claude gateway / commercial API). No vendor lock-in.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 MESSAGE_FETCH_BACKEND=batch
export OCTO_SEARCH_URL=http://octo-search-batch:8080
export OCTO_SEARCH_TOKEN=your-s2s-token
export OCTO_SEARCH_POLL_INTERVAL_SECONDS=1
export SUMMARY_LISTEN_ADDR=:8090
./cmd serve
OCTO_SEARCH_URL is the octo-search-batch base URL; do not include the /v1
suffix because the client appends the API path. Set MESSAGE_FETCH_BACKEND=mysql
to use the legacy MySQL message-content path.
Then, 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:
octo-server (scoped to the requesting operator).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:
We love pull requests! Before you open one, please read:
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
Go
99.9%
LLM-powered conversation summarisation service for OCTO — turns group chats and threads into structured briefs with key decisions, open questions, and follow-up candidates. Supports any OpenAI-compatible LLM backend.
33
stars
118
commits
Go
primary language
Sep 10, 2026
updated
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.
/summarise, /summarise/stream, /healthz, /metrics). No user state, no side effects beyond LLM calls and per-request tracing — easy to operate, easy to swap.LLM_API_URL; point it at any OpenAI-compatible endpoint (self-hosted vLLM / Ollama / Claude gateway / commercial API). No vendor lock-in.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 MESSAGE_FETCH_BACKEND=batch
export OCTO_SEARCH_URL=http://octo-search-batch:8080
export OCTO_SEARCH_TOKEN=your-s2s-token
export OCTO_SEARCH_POLL_INTERVAL_SECONDS=1
export SUMMARY_LISTEN_ADDR=:8090
./cmd serve
OCTO_SEARCH_URL is the octo-search-batch base URL; do not include the /v1
suffix because the client appends the API path. Set MESSAGE_FETCH_BACKEND=mysql
to use the legacy MySQL message-content path.
Then, 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:
octo-server (scoped to the requesting operator).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:
We love pull requests! Before you open one, please read:
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
Go
99.9%