Mininglamp-OSS/octo-smart-summary

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

github.com/Mininglamp-OSS
apache-2
chat-summary
conversation-intelligence
golang
llm
mapreduce
nlp
octo
openai-api
summarization

README

OCTO OCTO

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

License 简体中文


🌐 Read in: English · 简体中文

OCTO Smart-Summary

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.

🌟 Why OCTO Smart-Summary

  • 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.

🚀 Quickstart

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"}'

📦 Modules / Architecture

Top-level packages:

PathPurpose
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:

  1. Resolve the conversation id against octo-server (scoped to the requesting operator).
  2. Chunk the transcript into LLM-sized windows; preserve speaker / time boundaries.
  3. Prompt the LLM with a summariser template (brief / standard / decision-log modes).
  4. Parse the structured output; reject and re-prompt once if JSON validation fails.
  5. Enrich with conversation metadata (participants, duration) and return.

🔗 OCTO Ecosystem

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
RepositoryLanguageRole
octo-serverGoBackend API · business orchestration · Lobster agent scheduling
octo-matterGoTask / Todo / Matter micro-service
octo-smart-summaryGoLLM-powered conversation summarisation
octo-webTypeScript / ReactWeb & PC (Electron) client
octo-androidKotlin / JavaNative Android client
octo-iosSwift / Objective-CNative iOS client
octo-adminTypeScript / ReactAdmin console (tenant / org / user / channel management)
octo-libGoShared core library (protocol, crypto, storage, HTTP)
octo-adaptersTypeScript / PythonThird-party integrations (IM bridges, AI channels)

🧭 Philosophy

OCTO ships under three shared principles that apply to every repository in this matrix:

  1. 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.
  2. 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.
  3. 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.

🤝 Contributing

We love pull requests! Before you open one, please read:

For security issues please follow SECURITY.md instead of the public tracker.

📄 License

Apache License 2.0 — see LICENSE for the full text and NOTICE for third-party attributions.


Made with 🐙 by OCTO Contributors · Mininglamp-OSS

Contributors

lml2468

50 commits

wanyiwang06

32 commits

Liuxy20

12 commits

Ranwanglc

10 commits

Mininglamp-OSS/octo-smart-summary

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

github.com/Mininglamp-OSS
apache-2
chat-summary
conversation-intelligence
golang
llm
mapreduce
nlp
octo
openai-api
summarization

README

OCTO OCTO

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

License 简体中文


🌐 Read in: English · 简体中文

OCTO Smart-Summary

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.

🌟 Why OCTO Smart-Summary

  • 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.

🚀 Quickstart

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"}'

📦 Modules / Architecture

Top-level packages:

PathPurpose
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:

  1. Resolve the conversation id against octo-server (scoped to the requesting operator).
  2. Chunk the transcript into LLM-sized windows; preserve speaker / time boundaries.
  3. Prompt the LLM with a summariser template (brief / standard / decision-log modes).
  4. Parse the structured output; reject and re-prompt once if JSON validation fails.
  5. Enrich with conversation metadata (participants, duration) and return.

🔗 OCTO Ecosystem

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
RepositoryLanguageRole
octo-serverGoBackend API · business orchestration · Lobster agent scheduling
octo-matterGoTask / Todo / Matter micro-service
octo-smart-summaryGoLLM-powered conversation summarisation
octo-webTypeScript / ReactWeb & PC (Electron) client
octo-androidKotlin / JavaNative Android client
octo-iosSwift / Objective-CNative iOS client
octo-adminTypeScript / ReactAdmin console (tenant / org / user / channel management)
octo-libGoShared core library (protocol, crypto, storage, HTTP)
octo-adaptersTypeScript / PythonThird-party integrations (IM bridges, AI channels)

🧭 Philosophy

OCTO ships under three shared principles that apply to every repository in this matrix:

  1. 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.
  2. 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.
  3. 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.

🤝 Contributing

We love pull requests! Before you open one, please read:

For security issues please follow SECURITY.md instead of the public tracker.

📄 License

Apache License 2.0 — see LICENSE for the full text and NOTICE for third-party attributions.


Made with 🐙 by OCTO Contributors · Mininglamp-OSS

Contributors

lml2468

50 commits

wanyiwang06

32 commits

Liuxy20

12 commits

Ranwanglc

10 commits

Languages

Go

99.9%