{"id":50056145,"url":"https://github.com/mininglamp-oss/octo-smart-summary","last_synced_at":"2026-05-21T13:18:14.220Z","repository":{"id":357328745,"uuid":"1235491636","full_name":"Mininglamp-OSS/octo-smart-summary","owner":"Mininglamp-OSS","description":"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.","archived":false,"fork":false,"pushed_at":"2026-05-19T14:34:30.000Z","size":752,"stargazers_count":14,"open_issues_count":1,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-19T14:38:27.705Z","etag":null,"topics":["apache-2","chat-summary","conversation-intelligence","golang","llm","mapreduce","nlp","octo","openai-api","summarization"],"latest_commit_sha":null,"homepage":"https://github.com/Mininglamp-OSS","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Mininglamp-OSS.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["Mininglamp-OSS"]}},"created_at":"2026-05-11T11:28:51.000Z","updated_at":"2026-05-19T13:02:38.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Mininglamp-OSS/octo-smart-summary","commit_stats":null,"previous_names":["mininglamp-oss/octo-smart-summary"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Mininglamp-OSS/octo-smart-summary","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mininglamp-OSS%2Focto-smart-summary","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mininglamp-OSS%2Focto-smart-summary/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mininglamp-OSS%2Focto-smart-summary/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mininglamp-OSS%2Focto-smart-summary/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mininglamp-OSS","download_url":"https://codeload.github.com/Mininglamp-OSS/octo-smart-summary/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mininglamp-OSS%2Focto-smart-summary/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33301968,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-21T12:23:38.849Z","status":"ssl_error","status_checked_at":"2026-05-21T12:22:11.673Z","response_time":62,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apache-2","chat-summary","conversation-intelligence","golang","llm","mapreduce","nlp","octo","openai-api","summarization"],"created_at":"2026-05-21T13:18:12.609Z","updated_at":"2026-05-21T13:18:14.215Z","avatar_url":"https://github.com/Mininglamp-OSS.png","language":"Go","funding_links":["https://github.com/sponsors/Mininglamp-OSS"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./docs/assets/logo-light.png#gh-light-mode-only\" width=\"200\" alt=\"OCTO\"\u003e\n  \u003cimg src=\"./docs/assets/logo-dark.png#gh-dark-mode-only\" width=\"200\" alt=\"OCTO\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cb\u003eOCTO — the open workplace built for humans × AI agents.\u003c/b\u003e\u003cbr/\u003e\n  \u003csub\u003eLet \u003cb\u003eLobsters\u003c/b\u003e (OpenClaw-powered digital doubles) do the \u003ci\u003ethinking\u003c/i\u003e and \u003ci\u003edoing\u003c/i\u003e. You focus on \u003ci\u003etaste\u003c/i\u003e.\u003c/sub\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/Mininglamp-OSS\"\u003e\u003cb\u003e🏠 OCTO Home\u003c/b\u003e\u003c/a\u003e ·\n  \u003ca href=\"#-quickstart\"\u003e\u003cb\u003e🚀 Quickstart\u003c/b\u003e\u003c/a\u003e ·\n  \u003ca href=\"#-octo-ecosystem\"\u003e\u003cb\u003e📦 Ecosystem\u003c/b\u003e\u003c/a\u003e ·\n  \u003ca href=\"./CONTRIBUTING.md\"\u003e\u003cb\u003e🤝 Contributing\u003c/b\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"./LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-Apache_2.0-blue.svg\" alt=\"License\"\u003e\u003c/a\u003e\n  \u003ca href=\"./README.zh.md\"\u003e\u003cimg src=\"https://img.shields.io/badge/lang-简体中文-red.svg\" alt=\"简体中文\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n\u003e 🌐 **Read in**: **English** · [简体中文](README.zh.md)\n\n# OCTO Smart-Summary\n\n\u003e **LLM-powered conversation summarisation** — turn long OCTO threads, group chats, and meeting transcripts into scannable briefs.\n\n`octo-smart-summary` is a small Go service that wraps an OpenAI-compatible\nLLM endpoint behind a narrow, OCTO-aware API. Given a conversation id\n(`octo-server` channel / thread / meeting), it produces a structured summary\nwith key decisions, unanswered questions, and follow-up candidates — ready\nto hand off to `octo-matter` as draft todos.\n\n## 🌟 Why OCTO Smart-Summary\n\n- **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.\n- **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.\n- **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.\n\n## 🚀 Quickstart\n\n```bash\ngit clone https://github.com/Mininglamp-OSS/octo-smart-summary.git\ncd octo-smart-summary\ngo build ./cmd\n\n# minimal config via env\nexport LLM_API_URL=https://api.example.com/v1\nexport LLM_API_KEY=sk-your-key-here\nexport SUMMARY_LISTEN_ADDR=:8090\n\n./cmd serve\n```\n\nThen, from another terminal:\n\n```bash\ncurl -X POST http://localhost:8090/summarise \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"conversation_id\": \"channel:demo\", \"style\": \"brief\"}'\n```\n\n## 📦 Modules / Architecture\n\nTop-level packages:\n\n| Path | Purpose |\n|---|---|\n| `cmd/` | Service entrypoint + subcommands |\n| `internal/config/` | Env-driven config (LLM endpoint, rate limits, listen address) |\n| `internal/handler/` | HTTP handlers — `/summarise`, `/summarise/stream`, `/healthz`, `/metrics` |\n| `internal/service/` | Summarisation pipeline (fetch transcript → chunk → prompt → parse → enrich) |\n| `internal/llm/` | LLM client — OpenAI-compatible `/v1/chat/completions` + streaming |\n| `internal/octo/` | Thin client for `octo-server` — fetches the conversation transcript behind a scoped token |\n| `internal/middleware/` | Auth, rate-limit, logging, tracing |\n| `internal/model/` | Request / response structs (`SummaryRequest`, `SummaryResult`) |\n\nSummary pipeline per request:\n\n1. **Resolve** the conversation id against `octo-server` (scoped to the requesting operator).\n2. **Chunk** the transcript into LLM-sized windows; preserve speaker / time boundaries.\n3. **Prompt** the LLM with a summariser template (brief / standard / decision-log modes).\n4. **Parse** the structured output; reject and re-prompt once if JSON validation fails.\n5. **Enrich** with conversation metadata (participants, duration) and return.\n\n## 🔗 OCTO Ecosystem\n\n\u003c!-- shared snippet: OCTO repo matrix. Keep identical across all 9 repos. --\u003e\n\n```mermaid\ngraph TD\n  subgraph Clients[Clients]\n    Web[octo-web\u003cbr/\u003eWeb / PC]\n    Android[octo-android\u003cbr/\u003eAndroid]\n    iOS[octo-ios\u003cbr/\u003eiOS]\n  end\n\n  subgraph Core[Core Services]\n    Server[octo-server\u003cbr/\u003eBackend API]\n    Matter[octo-matter\u003cbr/\u003eTask / Todo]\n    Summary[octo-smart-summary\u003cbr/\u003eAI Summary]\n    Admin[octo-admin\u003cbr/\u003eAdmin Console]\n  end\n\n  subgraph Shared[Shared Libraries \u0026 Integrations]\n    Lib[octo-lib\u003cbr/\u003eCore Go Library]\n    Adapters[octo-adapters\u003cbr/\u003eThird-party Adapters]\n  end\n\n  Web --\u003e Server\n  Android --\u003e Server\n  iOS --\u003e Server\n  Admin --\u003e Server\n  Server --\u003e Matter\n  Server --\u003e Summary\n  Server --\u003e Adapters\n  Server -.uses.-\u003e Lib\n  Matter -.uses.-\u003e Lib\n  Adapters -.uses.-\u003e Lib\n```\n\n| Repository | Language | Role |\n|---|---|---|\n| [`octo-server`](https://github.com/Mininglamp-OSS/octo-server) | Go | Backend API · business orchestration · Lobster agent scheduling |\n| [`octo-matter`](https://github.com/Mininglamp-OSS/octo-matter) | Go | Task / Todo / Matter micro-service |\n| [`octo-smart-summary`](https://github.com/Mininglamp-OSS/octo-smart-summary) | Go | LLM-powered conversation summarisation |\n| [`octo-web`](https://github.com/Mininglamp-OSS/octo-web) | TypeScript / React | Web \u0026 PC (Electron) client |\n| [`octo-android`](https://github.com/Mininglamp-OSS/octo-android) | Kotlin / Java | Native Android client |\n| [`octo-ios`](https://github.com/Mininglamp-OSS/octo-ios) | Swift / Objective-C | Native iOS client |\n| [`octo-admin`](https://github.com/Mininglamp-OSS/octo-admin) | TypeScript / React | Admin console (tenant / org / user / channel management) |\n| [`octo-lib`](https://github.com/Mininglamp-OSS/octo-lib) | Go | Shared core library (protocol, crypto, storage, HTTP) |\n| [`octo-adapters`](https://github.com/Mininglamp-OSS/octo-adapters) | TypeScript / Python | Third-party integrations (IM bridges, AI channels) |\n\n## 🧭 Philosophy\n\nOCTO ships under three shared principles that apply to every repository in this matrix:\n\n1. **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.\n2. **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.\n3. **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.\n\n## 🤝 Contributing\n\nWe love pull requests! Before you open one, please read:\n\n- [CONTRIBUTING.md](CONTRIBUTING.md) — workflow, branch model, commit style\n- [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) — community expectations\n\nFor security issues please follow [SECURITY.md](SECURITY.md) instead of the public tracker.\n\n## 📄 License\n\nApache License 2.0 — see [LICENSE](LICENSE) for the full text and [NOTICE](NOTICE) for third-party attributions.\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003csub\u003eMade with 🐙 by \u003cb\u003eOCTO Contributors\u003c/b\u003e · \u003ca href=\"https://github.com/Mininglamp-OSS\"\u003eMininglamp-OSS\u003c/a\u003e\u003c/sub\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmininglamp-oss%2Focto-smart-summary","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmininglamp-oss%2Focto-smart-summary","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmininglamp-oss%2Focto-smart-summary/lists"}