{"id":50056148,"url":"https://github.com/mininglamp-oss/octo-server","last_synced_at":"2026-05-21T13:18:16.749Z","repository":{"id":357519673,"uuid":"1235491557","full_name":"Mininglamp-OSS/octo-server","owner":"Mininglamp-OSS","description":"🐙 The Go backend powering OCTO — an open workplace built for humans × AI agents. REST \u0026 WebSocket APIs, Lobster (AI agent) orchestration, and WuKongIM real-time messaging control plane.","archived":false,"fork":false,"pushed_at":"2026-05-20T09:08:14.000Z","size":160386,"stargazers_count":16,"open_issues_count":25,"forks_count":7,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-20T09:56:55.134Z","etag":null,"topics":["ai-agents","apache2","chat","collaboration","digital-workplace","go","golang","im","instant-messaging","lobster","openclaw","rest-api","self-hosted","websocket","wukongim"],"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":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":"docs/roadmap.md","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:46.000Z","updated_at":"2026-05-20T09:08:19.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Mininglamp-OSS/octo-server","commit_stats":null,"previous_names":["mininglamp-oss/octo-server"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Mininglamp-OSS/octo-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mininglamp-OSS%2Focto-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mininglamp-OSS%2Focto-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mininglamp-OSS%2Focto-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mininglamp-OSS%2Focto-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mininglamp-OSS","download_url":"https://codeload.github.com/Mininglamp-OSS/octo-server/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mininglamp-OSS%2Focto-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33301976,"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":["ai-agents","apache2","chat","collaboration","digital-workplace","go","golang","im","instant-messaging","lobster","openclaw","rest-api","self-hosted","websocket","wukongim"],"created_at":"2026-05-21T13:18:15.307Z","updated_at":"2026-05-21T13:18:16.743Z","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 Server\n\n\u003e **The Go backend** at the centre of OCTO — REST + WebSocket APIs, Lobster agent orchestration, and the control plane for WuKongIM.\n\n`octo-server` is the heart of the OCTO platform. It exposes REST +\nWebSocket APIs consumed by\n[`octo-web`](https://github.com/Mininglamp-OSS/octo-web) and\n[`octo-admin`](https://github.com/Mininglamp-OSS/octo-admin), orchestrates\nbusiness logic and Lobster (AI agent) scheduling, and drives the\n[`WuKongIM`](https://github.com/WuKongIM/WuKongIM) IM core for real-time\nmessaging.\n\n## 🌟 Why OCTO Server\n\n- **One anchor for the whole platform.** Clients, adapters, matter, summary, and admin all meet at `octo-server`. Deploy and scale one backend; everything else speaks to it.\n- **Lobster-orchestration first class.** Routing, session, and tool-call execution for OpenClaw-powered digital doubles are built into the server, not bolted on. Agents are treated as first-class conversation participants.\n- **Pluggable storage \u0026 IM.** MySQL-compatible SQL migrations and object-storage adapters ship in the box; WuKongIM is driven over a thin control-plane boundary so the IM core remains swappable.\n\n## 🚀 Quickstart\n\n```bash\ngit clone https://github.com/Mininglamp-OSS/octo-server.git\ncd octo-server\ngo build -o octo-server .\n./octo-server --config ./configs/tsdd.yaml\n```\n\nThe default dev config expects a local WuKongIM instance and a\nMySQL-compatible database. See the bundled `configs/tsdd.yaml`\ntemplate for the standalone-binary path, [`QUICKSTART.md`](./QUICKSTART.md) for an\nend-to-end walkthrough, and [`BUILDING.md`](./BUILDING.md) for\ncross-repo build notes.\n\nFor a one-command Docker Compose stack (server + admin + web + matter\n+ smart-summary + WuKongIM + MySQL + Redis + MinIO + nginx), use the\n**official OOTB deployment** at\n[`Mininglamp-OSS/octo-deployment`](https://github.com/Mininglamp-OSS/octo-deployment).\nThe older `docker/octo/` and `docker/tsdd/` compose stacks that used\nto live in this repo have been retired in favour of that single\nsource of truth.\n\n## 📦 Modules / Architecture\n\nHigh-level layout:\n\n| Path | Purpose |\n|---|---|\n| `cmd/` | Service entry points (`octo-server`, subcommands) |\n| `internal/api/` | REST + WebSocket handlers — conversation, user, group, file, org, webhook |\n| `internal/service/` | Business logic — access control, Lobster orchestration, IM fan-out |\n| `internal/repository/` | SQL + cache repositories (MySQL, Redis) |\n| `internal/im/` | Control-plane client for WuKongIM (channel / message / presence) |\n| `internal/agent/` | Lobster routing, session store, tool-call execution |\n| `internal/adapter/` | Adapter registration + dispatch surfaces |\n| `configs/` | YAML config schema + dev / prod examples |\n| `migrations/` | SQL schema migrations |\n| `docs/` | Architecture notes, API reference, diagrams |\n\nWhat the server does each request:\n\n1. **Authenticate** — token / cookie / DH-sealed WebSocket frame.\n2. **Authorise** — org-aware RBAC, per-channel ACL, agent-identity gating.\n3. **Execute** — run business logic, possibly spawning / resuming a Lobster agent session.\n4. **Fan out** — enqueue IM message via WuKongIM, trigger adapters if the channel requires an external bridge.\n5. **Respond** — unified JSON envelope (or WebSocket frame) with tracing + metrics tags.\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## 🙏 Acknowledgments\n\n`octo-server` is a derivative work of:\n\n- **[TangSengDaoDaoServer](https://github.com/TangSengDaoDao/TangSengDaoDaoServer)** — our upstream, by the TangSengDaoDao team.\n- **[WuKongIM](https://github.com/WuKongIM/WuKongIM)** — the real-time messaging core we drive.\n\nSee [NOTICE](NOTICE) for the exhaustive Go module license inventory and third-party attribution block.\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-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmininglamp-oss%2Focto-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmininglamp-oss%2Focto-server/lists"}