{"id":49941320,"url":"https://github.com/ozzy-labs/opshub","last_synced_at":"2026-05-17T11:11:36.922Z","repository":{"id":358276302,"uuid":"1240636310","full_name":"ozzy-labs/opshub","owner":"ozzy-labs","description":"Local-first operational memory and execution hub for humans and AI agents. Connectors aggregate work signals — GitHub, Slack, Microsoft 365, Box, and more — into a single local store.","archived":false,"fork":false,"pushed_at":"2026-05-16T16:45:47.000Z","size":444,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-16T16:46:31.332Z","etag":null,"topics":["ai-agents","claude-code","event-sourcing","local-first","multi-agent","operational-memory","ozzylabs","python"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ozzy-labs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"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":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-16T11:30:50.000Z","updated_at":"2026-05-16T16:45:49.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ozzy-labs/opshub","commit_stats":null,"previous_names":["ozzy-labs/opshub"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/ozzy-labs/opshub","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ozzy-labs%2Fopshub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ozzy-labs%2Fopshub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ozzy-labs%2Fopshub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ozzy-labs%2Fopshub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ozzy-labs","download_url":"https://codeload.github.com/ozzy-labs/opshub/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ozzy-labs%2Fopshub/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33136164,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-17T09:28:26.183Z","status":"ssl_error","status_checked_at":"2026-05-17T09:27:52.702Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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","claude-code","event-sourcing","local-first","multi-agent","operational-memory","ozzylabs","python"],"created_at":"2026-05-17T11:11:12.130Z","updated_at":"2026-05-17T11:11:36.911Z","avatar_url":"https://github.com/ozzy-labs.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OpsHub\n\n**Local-first operational memory and execution hub for humans and AI agents.**\n\n*人間と AI エージェントのための、ローカルファーストな Operational Memory 兼 実行ハブ。*\n\n\u003e Status: **Phase 1 (foundation) + Phase 2 (coordination) + Phase 3 (connectors + workspace ingest、MVP = framework + GitHub) + Phase 4 (semantic recall layer、MVP = Pluggable Embedder + sqlite-vec + recall + 重複検出) + Phase 5 (briefing layer、MVP = ADR-0015 + Pluggable LLM (Anthropic + OpenAI) + `opshub brief` + event-driven auto-embed 補助) + Phase 6 (action loop layer、MVP = ADR-0016 + Pluggable LLM structured output (Anthropic + OpenAI + Ollama) + Proposal domain (events + projection + service + CLI)) complete (2026-05-17)**. Slack / Microsoft 365 / Box の connector は Phase 3.x 以降で順次追加する。`llama.cpp` direct binding / briefing cache + narrow scope / `links` projection 本実装 / multi-machine sync は Phase 6.x / 7。Phase 7 (Connectors Wave 2) は epic #113 で planned。`docs/` 配下のドキュメントは現状の方針を反映しつつ、議論を踏まえて更新されます。\n\n## 概要\n\nOpsHub は GitHub・Slack・Microsoft 365・Box などの業務シグナルをローカルの event store に集約し、Claude Code / Codex CLI / Gemini CLI / GitHub Copilot CLI のいずれからも、triage・下書き・実行を 1 つのワークスペースで行えるようにする。\n\nOpsHub は以下を提供する。\n\n- **Operational Memory**: 業務上の出来事・決定・タスクをローカルに継続保持する仕組み\n- **Workspace Runtime**: 人間と AI エージェントが共有する作業面\n- **Multi-Agent Coordination Layer**: 複数 AI エージェントの協調実行\n- **Execution Hub**: SaaS への返信・送信などのアクション実行ポイント\n\nOpsHub は以下では「ない」。\n\n- 単なる TODO 管理ツール\n- SaaS 型プロジェクト管理ツール\n- AI チャットボットラッパー\n- ドキュメント保管庫\n- 単独の workflow オーケストレータ\n\n## Quickstart\n\nOpsHub is distributed as a Python CLI. Install via `uv` (recommended) or `pip`:\n\n```bash\n# Recommended: isolated tool install via uv\nuv tool install --from . opshub\n\n# Or in a project venv\nuv pip install -e .\n```\n\nFirst-time setup:\n\n```bash\nopshub init\n```\n\nThis creates `~/.config/opshub/config.toml`, `~/.local/share/opshub/`, the\nworkspace at `~/opshub/workspace/`, and applies the database migrations.\n\nDaily use:\n\n```bash\n# Capture a task\nopshub task create \"draft phase 2 plan\"\n\n# List tasks (formats: table / md / json)\nopshub task list --format md\n\n# Capture / triage / list an inbox item\nopshub inbox add \"triage the failing nightly build\"\nopshub inbox triage \u003cid\u003e --to-task \"fix nightly build\"\nopshub inbox list --format md\n\n# Record / list a decision\nopshub decision record \"adopt sqlite-vec for Phase 4\"\nopshub decision list\n\n# Acquire / release / list a coordination lock (ADR-0013)\nopshub lock acquire task:\u003ctask-ulid\u003e\nopshub lock release \u003clock-id\u003e\nopshub lock list\n\n# Bracket a work session (auto-injected into agent runs)\nopshub session start --scope \"phase-3 design\"\nopshub agent run begin claude\nopshub agent run end \u003crun-id\u003e --summary \"drafted ADR-0017\"\nopshub session end --summary \"EOD wrap\"\n\n# Open / close a handoff between actors\nopshub handoff open --from agent:claude --to ozzy --topic \"review\"\nopshub handoff close \u003chandoff-id\u003e --note \"merged\"\n\n# Connector layer (Phase 3, ADR-0010 / ADR-0014)\nopshub connector auth set github       # store GitHub PAT in OS keychain\nopshub connector sync github           # incremental sync (requires OPSHUB_CONNECTOR_GITHUB_REPO=owner/repo)\nopshub connector list                  # show registered connectors\n\n# Ingest hand-written notes (Phase 3 workspace inbox)\nopshub workspace ingest                # ingest workspace/inbox/*.md\nopshub workspace ingest --dry-run      # scan only, no writes\n\n# Regenerate the markdown workspace from the projections\nopshub workspace generate\n\n# Rebuild projections from the event store (idempotent)\nopshub projections rebuild\n\n# Semantic recall layer (Phase 4, ADR-0012)\nopshub connector auth set embedder:openai      # store OpenAI API key in OS keychain\nopshub embeddings rebuild                      # bulk-embed task/decision/inbox/source summaries\nopshub embeddings status                       # show backend + per-entity-type embedded vs pending\nopshub embeddings drain                        # retry pending embeddings (auto-embed hook backup)\nopshub embeddings find-duplicates -t 0.92      # offline near-duplicate scan\nopshub recall \"認証の最近の決定\"               # semantic search across all entities\n\n# Briefing layer (Phase 5, ADR-0015)\nopshub connector auth set llm:anthropic        # store Anthropic API key in OS keychain\nopshub brief \"phase 5 progress\"                # LLM-backed briefing on a topic (markdown to stdout)\nopshub brief \"phase 5 progress\" --save         # also persist under \u003cworkspace\u003e/briefings/\nopshub brief \"phase 5 progress\" --format json  # JSON record with briefing_id / model / tokens / source_refs\n\n# Action loop layer (Phase 6, ADR-0016)\nopshub propose generate \"next steps\"                       # LLM proposes task/decision candidates (markdown to stdout)\nopshub propose generate \"next steps\" --from-briefing \u003cid\u003e  # seed from a Phase 5 briefing\nopshub propose generate \"next steps\" --format json         # JSON record with proposal_id / candidates / model / tokens\nopshub propose list                                        # recent proposals (markdown table)\nopshub propose list --state pending --limit 10             # filter by candidate state (pending / applied / rejected)\nopshub propose apply \u003cproposal-id\u003e \u003ccandidate-index\u003e       # operator approval → creates task / decision via existing services\nopshub propose reject \u003cproposal-id\u003e \u003ccandidate-index\u003e --reason \"out of scope\"\n```\n\nAll state lives under XDG directories; override via `OPSHUB_*` env vars (e.g.\n`OPSHUB_STORAGE__DB_PATH=/custom/path.sqlite`).\n\n## ドキュメント\n\n- [Principles (基本方針)](docs/principles.md)\n- [Architecture (アーキテクチャ)](docs/architecture.md)\n- [Repository \u0026 Package Structure (リポジトリ・パッケージ構成)](docs/repository-structure.md)\n- [Architecture Decision Records](docs/adr/README.md)\n\n## ステータス\n\nPhase 1 (foundation)・Phase 2 (coordination)・Phase 3 (connectors + workspace ingest、MVP = framework + GitHub)・Phase 4 (semantic recall layer、MVP = Pluggable Embedder + sqlite-vec + recall + 重複検出)・Phase 5 (briefing layer、MVP = ADR-0015 + Pluggable LLM + `opshub brief` + event-driven auto-embed 補助)・Phase 6 (action loop layer、MVP = ADR-0016 + Pluggable LLM structured output (Anthropic + OpenAI + Ollama) + Proposal domain) を 2026-05-17 に完了しました。`opshub init` / `task` / `inbox` / `decision` / `lock` / `session` / `agent run` / `handoff` / `connector` (`auth set` / `sync` / `list`) / `workspace ingest` / `workspace generate` / `projections rebuild` / `embeddings` (`rebuild` / `drain` / `status` / `find-duplicates`) / `recall` / `brief` / `propose` (`generate` / `list` / `apply` / `reject`) が動作し、event store + 全 projection (`briefings` / `proposals` 含む) + markdown 生成 + GitHub connector + workspace inbox file ingest + semantic recall + Pluggable LLM (Anthropic / OpenAI / Ollama) + structured output + Proposal domain + tests + CI が green の状態です。Slack / Microsoft 365 / Box の connector は Phase 3.x 以降で順次追加します (Phase 7 / epic #113 で connectors wave 2 として planned)。`llama.cpp` direct binding / briefing cache + narrow scope / `links` projection 本実装 / multi-machine sync は Phase 6.x / 7。\n\nPhase ロードマップ:\n\n1. **Phase 1**: Event store + tasks + CLI + markdown 生成 (foundation) — ✅ Complete (2026-05-17)\n2. **Phase 2**: Inbox triage / decisions / locks / work sessions / agent runs / handoffs (coordination) — ✅ Complete (2026-05-17)\n3. **Phase 3**: Connector framework + GitHub connector + workspace inbox file ingest — ✅ Complete (2026-05-17) (Slack / Microsoft 365 / Box は Phase 3.x で順次)\n4. **Phase 4**: Vector recall / semantic search / 重複検出 (semantic layer、MVP = Pluggable Embedder + sqlite-vec) — ✅ Complete (2026-05-17) (briefing 自動生成 / event 駆動自動 embed は Phase 5 で)\n5. **Phase 5**: Briefing layer (ADR-0015 + Pluggable LLM (Anthropic + OpenAI) + `opshub brief` + event-driven auto-embed 補助) — ✅ Complete (2026-05-17)\n6. **Phase 6**: Action loop layer (ADR-0016 + Pluggable LLM structured output (Anthropic + OpenAI + Ollama) + Proposal domain (events + projection + service + `opshub propose` CLI)) — ✅ Complete (2026-05-17) (`llama.cpp` direct binding / proposal scoring は Phase 6.x で)\n7. **Phase 7**: Connectors Wave 2 (Slack / Microsoft 365 / Box) — Planned (epic #113)\n\n詳細は [Principles 項 9 (Phased Delivery)](docs/principles.md) と各 ADR を参照。\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fozzy-labs%2Fopshub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fozzy-labs%2Fopshub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fozzy-labs%2Fopshub/lists"}