Home
Softono

Octo Matter

Open source Apache-2.0 Go
17
Stars
0
Forks
7
Issues
0
Watchers
2 months
Last Commit

 About Octo Matter

Lightweight task & matter service for the OCTO platform — REST API, timeline tracking, and LLM-powered extraction. Part of the OCTO open workplace for humans × AI agents.

Platforms

Web Self-hosted

Languages

Go

Links

Need Help Installing Octo Matter?

We provide expert installation service for this software. Our team will install, configure, and secure Octo Matter on your server. plans start at just $30.

Octo Matter

View on GitHub

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 Matter

Lightweight task / todo / "matter" service — the generalised action-item primitive used by OCTO clients and Lobster agents.

octo-matter is a focused Go service that manages matters — a generalised task / todo / action-item primitive used by the OCTO clients and by Lobster agents. It exposes a REST API for create / update / assign / close, plus a timeline sub-service that records activity against each matter (comments, status changes, LLM-extracted follow-ups).

🌟 Why OCTO Matter

  • Task + timeline in one service. Every matter owns its own append-only activity stream, so "what happened to this task?" is a single database query, not a stitched reconstruction across four microservices.
  • Turn chat into structured work. A pluggable LLM extractor turns free-form text (chat snippets, meeting notes) into structured matter drafts — Lobster agents can surface candidate todos with one call.
  • Notifier-abstracted. Ships with a first-class octo-server IM notifier and a generic HTTP-webhook sink, so matter events fan out to wherever the team already is.

🚀 Quickstart

git clone https://github.com/Mininglamp-OSS/octo-matter.git
cd octo-matter
go build -o octo-matter ./cmd

# configure via env vars (see internal/config/config.go for the full list)
export LLM_API_URL=https://api.example.com/v1
export OCTO_LLM_PROVIDER=compat # compat, openai, or anthropic
export MYSQL_DSN='user:pass@tcp(127.0.0.1:3306)/matter?parseTime=true'

./octo-matter

Minimal external dependencies — MySQL + an LLM endpoint

LLM providers:

  • compat (default): OpenAI-compatible /v1/chat/completions; set LLM_API_URL to the gateway's /v1 base.
  • openai: OpenAI official Go SDK; set LLM_API_URL=https://api.openai.com/v1.
  • anthropic: Anthropic official Go SDK; set LLM_API_URL=https://api.anthropic.com (a trailing /v1 is tolerated).

📦 Modules / Architecture

Top-level packages under this module:

Path Purpose
cmd/ Service entrypoint + timeline transaction helper
internal/config/ Env-driven config loader
internal/handler/ HTTP handlers (matter, timeline, activity, extract)
internal/service/ Business logic (access control, LLM extraction, timeline)
internal/repository/ MySQL repositories for matters, assignees, channels, timelines
internal/llm/ LLM clients — OpenAI-compatible gateway plus official OpenAI / Anthropic SDK providers
internal/notification/ Notifier interface + OCTO-IM implementation
internal/apperr/ Typed application errors
internal/model/ Shared data models
internal/middleware/ Auth / logging / recovery middleware
migrations/ SQL schema migrations

Request lifecycle:

  1. Ingest — either a human POST /matters call, or an /extract call with free-form text.
  2. Access-control — per-org + per-channel visibility rules.
  3. Persist — matter row + initial timeline record in one transaction.
  4. Notify — push an event via the configured Notifier (OCTO IM, webhook, or both).
  5. Loop — subsequent updates append to the same timeline, giving a complete audit trail.

🔗 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]
    IM[WuKongIM<br/>IM Engine]
  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
  Server --> Matter
  Server --> IM
  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-daemon-cli Go Ops & onboarding CLI, local daemon
octo-web TypeScript / React Web & PC (Electron) client
octo-android Kotlin / Java Native Android client
octo-ios Swift / Objective-C Native iOS client
WuKongIM Go IM engine (fork, enhanced for OCTO)
octo-lib Go Shared core library (protocol, crypto, storage, HTTP)
octo-adapters TypeScript / Python Third-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