跳到主要内容
    ↑↓ 选择↵ 打开esc 关闭
    中文English
    moabualruz

    @fulcrum-agent-os/opencode-plugin

    v0.0.6记忆与上下文
    @fulcrum-agent-os/opencode-plugin

    Fulcrum Agent OS — opencode plugin. Injects the canonical Fulcrum-first rider into every LLM turn via experimental.chat.system.transform, with SHA-256 integrity verification and session.idle telemetry for silent-failure detection.

    GitHub 星标

    2

    月装机量

    15

    近 7 天 2

    综合评分SCORE

    28.8

    生态多维模型

    最近提交

    1 个月前

    2026-06-30

    快速安装与配置

    opencode.json

    写入当前项目的 opencode.json,只对这个仓库生效。

    opencode.json

    {
      "$schema": "https://opencode.ai/config.json",
      "plugin": ["@fulcrum-agent-os/opencode-plugin@0.0.6"]
    }

    opencode 启动时会通过内嵌运行时自动加载 npm 依赖并缓存至本地目录,无需手动在全局环境执行安装。

    Fulcrum — lever pivot

    Fulcrum

    Your repo, your work board, your agents — one local-first Agent OS.

    A fulcrum is the pivot point of a lever — the supporting structure that turns small effort into large output. Same idea here: small commits land big outcomes through the agents you supervise.

    Project management + agent orchestration + docs + memory + a CLI/TUI/Web triad, all running on your machine. PGlite by default; swap in Postgres with one env var. SaaS-ready schema from day one. Online features ship but stay dark behind explicit feature flags until you opt in.

    Status: alpha Local-first Surfaces License: MIT Built with Bun

    Quick Start · Three Surfaces · How it Works · User Manuals · Acknowledgements


    Why Fulcrum

    Coding agents are everywhere; the work around them is fragmented. Tickets in Jira, docs in Notion, runs in a sandbox no one watches, memory in a markdown file someone forgot to commit. Fulcrum collapses that into one process you control:

    • Local-first by default — your project, your DB, your machine. No telemetry leaves the box unless you flip a flag.
    • Three surfaces, one model — Web, CLI, TUI all hit the same NestJS public API. Whatever you do in one is real in the others, immediately.
    • Sandbox-first agent runs — agents run inside isolated worktrees + container images, not your dev shell. Powered by Matt Pocock's Sandcastle.
    • OpenAI Symphony-compatiblefulcrum doctor validates conformance to the openai/symphony orchestration spec; the work-board → run lifecycle implements its contract.
    • No vendor lock-in — PGlite for dev, Postgres for prod via FULCRUM_DATABASE_URL. Same schema both ways.

    Quick Start

    # 1. clone + install
    git clone https://github.com/moabualruz/fulcrum
    cd fulcrum
    bun install
    
    # 2. spin the stack (3 processes)
    cd apps/server && bun run src/index.ts &                              # NestJS public API @ :3000
    cd apps/web    && FULCRUM_SERVER_URL=http://localhost:3000 bun run dev # SvelteKit web  @ :5173
    bun run apps/tui/src/index.ts                                          # OpenTUI terminal
    
    # 3. install the CLI globally (one binary)
    bun run build && cp dist/fulcrum-darwin-arm64 ~/.local/bin/fulcrum
    fulcrum doctor   # confirms the stack is wired
    

    Open http://localhost:5173/, pick your project, ship work.


    Three Surfaces, One Brain

    The same NestJS server backs every surface. The web is a pure invocation layer — it never opens a database — and the TUI / CLI hit the same /api/v1/* endpoints. Whatever a human can do, an agent can do.

    Web
    SvelteKit · :5173
    CLI
    Bun-compiled · one binary
    TUI
    OpenTUI · keyboard-first
    Web backlog with sprint planning fulcrum doctor TUI Doctor screen

    The Operate stage is identical across surfaces — same doctor, same MCP inventory, same plugin registry:

    Operate stage in the web app

    Full per-surface guides + every screen captured against live data live in docs/manuals/.


    Tasks, Boards, and the Build Graph

    The work spine — what your team is doing, who's doing it, and what's blocked.

    Workspace kanban — /boards

    Five-column board over canonical statuses (pending, in_progress, blocked, completed, cancelled) with every task in the workspace. Tabs swap into List, Table, Gantt, or Calendar views without leaving the page. New tasks are created inline per column.

    Workspace boards across 5 columns

    Project board — /projects/<slug>/board

    Same kanban, scoped to one project. The "manual task workbench" header summarizes Backlog / Unstarted / Started / Completed / Canceled so a PM can read status at a glance before drilling into cards.

    Per-project board with manual workbench summary

    Build dependency graph — /build-graph

    Sugiyama-layered DAG of the running build. Nodes color-code by lifecycle (queued, running, awaiting, blocked, completed), edges curve along the running chain, and the selected node opens an info card with Open run + Open task actions.

    Build dependency graph with selected node panel

    The same data drives the CLI (fulcrum tasks list --json, fulcrum runs graph --json) and the TUI (Build · Graph chord), so a human and an agent see identical state.


    Plan → Review → Ship

    Every stage shares the same vocabulary (status badges, ModeRow per step, trace badge in the topbar) so the UI tells the same story across the workflow:

    Plan — /planning

    The Plan stage owns AI Assist sessions, traffic streams, and the persistent planning workspace. Sessions list left, planning workspace centre, source-doc + trace-summary on the right.

    Plan stage with active AI Assist session and traffic stream

    Review — /review

    Code, QA, E2E, and Final QA review queues with diff + comments tripane.

    Review stage tripane

    Ship — /ship

    Release cuts, archive timeline, artifact bundle download — same data as fulcrum ship list --json.

    Ship stage release list

    Operate — /operate

    Doctor system health (subsystems, latency, error rate), MCP inventory, plugins, alerts, telemetry. Mirrors fulcrum doctor.

    Operate stage doctor view


    How it Works

                ┌─────────────────────────────────────────────────┐
                │             NestJS public API @ :3000           │
                │ /api/v1/*  +  tRPC  +  Swagger  +  agent runs   │
                └─────────────┬───────────────┬───────────────────┘
                              │               │
            ┌─────────────────┴──┐         ┌──┴────────────────────┐
            │ SvelteKit web :5173 │         │  CLI binary  +  TUI   │
            │ (no in-proc DB)    │         │ (HTTP only, no DB)    │
            └─────────────────────┘         └───────────────────────┘
                              │               │
                              ▼               ▼
                ┌──────────────────────────────────────────────────┐
                │   PGlite  ⟷  TypeORM  ⟷  fulcrum_* entity tables  │
                │   (swap to Postgres with FULCRUM_DATABASE_URL)   │
                └──────────────────────────────────────────────────┘
                              │
                              ▼
                ┌──────────────────────────────────────────────────┐
                │ Sandcastle runtime — isolated worktree + sandbox │
                │   (Claude Code, Codex, Gemini, OpenCode, Pi …)   │
                └──────────────────────────────────────────────────┘
    

    What you get out of the box

    Pillar What it does Surfaces
    Foundation Auth, orgs, feature flags, migrations Web · CLI
    Symphony orchestration Agent dispatch, run lifecycle, retry/stall recovery Web · CLI · TUI
    Sandcastle agent runs Sandboxed execution, transcript capture, artifact harvest CLI · TUI
    Inference sidecar Embedded models, Ollama / LM Studio backends, embeddings CLI · Web
    Routing & skills Rules engine, skill marketplace, auto-assign Web · CLI · TUI
    Tasks & sprints Kanban, sprints, burndown, custom fields Web · CLI · TUI
    Docs & collab TipTap editor, versioning, comments, templates Web · TUI
    Memory & context Heuristic extraction, BM25 retrieval, context assembly CLI · Web
    Repos & git Repository supervision, file browser, commit log Web · CLI · TUI
    Artifacts Run artifact storage, dedup, lifecycle Web · CLI
    Search Full-text search, facets, saved searches Web · CLI · TUI
    Notifications Rules engine, inbox, audit log, webhooks Web · CLI · TUI
    Public API REST /api/v1/* + tRPC, OpenAPI 3.1 schema API
    Cross-cutting Themes, backups, imports/exports, telemetry, secrets Web · CLI · TUI

    All "online" features ship but stay disabled until you opt in via FULCRUM_FEATURES=feature-a,feature-b. The web prod build defaults to off; local dev defaults public-api on so you can drive the stack without flags.


    CLI in 10 seconds

    fulcrum init                          # bootstrap a project (AGENTS.md, CLAUDE.md, .gitignore)
    fulcrum install --profile minimal     # splice rules + hooks + skills into every detected agent
    fulcrum doctor --json | jq            # canonical envelope: pipe into CI
    fulcrum hooks list                    # see registered hook recipes
    fulcrum skills sync                   # mirror authored skills to every agent
    fulcrum compress --check              # CI gate: caveman compression up to date
    

    Every subcommand has --help. The CLI emits a fulcrum.cli.v1 JSON envelope under --json for machine consumers.

    fulcrum --help


    Status

    • alpha — wire-up complete across all 13 service domains; APIs settling.
    • 1,500+ tests pass on dev/v1.0 (typecheck 0, architecture 208/0, ui-kit 90/0, web 1,525/0).
    • The web is a verified pure invocation layer — tests/architecture/ enforces it.
    • Active areas: sprint↔task entity unification, TUI screen coverage, additional MCP servers.

    See docs/manuals/findings.md for the most recent manual-test pass and a transparent ledger of bugs found + fixed + open.


    Acknowledgements

    Fulcrum stands on shoulders. Two projects in particular were so directly useful they're hard-coded into the stack:

    🏰 Sandcastle — by @mattpocock

    @ai-hero/sandcastle powers every agent run in Fulcrum. It hands us:

    • Isolated worktree + sandbox per run (Docker / Podman / Vercel / custom).
    • Provider abstraction across Claude Code, Codex, Gemini, OpenCode, Pi.
    • Branch-strategy management so agents never touch your live tree.

    You can see it live in services/execution-orchestration/infrastructure/agent-runtime/sandbox-runner.tsrunAgent + resolveProvider + sandboxProviderDoctorChecks are all Sandcastle bindings. The fulcrum doctor sandbox check returns Sandcastle's provider availability + trust-boundary warning verbatim. Pin: @ai-hero/sandcastle@0.5.6 (tests/execution-orchestration/agent-runtime/sandcastle-deps.test.ts keeps it locked).

    📚 Skills — by @mattpocock

    The mattpocock/skills repository is the upstream pattern Fulcrum's fulcrum skills upstream mirrors. Authored skills follow the same SKILL.md frontmatter + body shape; the same lint rules apply. Without Matt's work on what a skill IS, this layer would not exist.

    Thank you, Matt — both gifts are foundational.

    🎼 Symphony — by OpenAI

    Fulcrum implements OpenAI's Symphony orchestration spec — the work-board → autonomous-run lifecycle, evidence contracts, retry/stall recovery, PR-landing semantics. fulcrum doctor --subsystem symphony validates conformance.

    Thanks to the OpenAI contributors driving Symphony forward — including @frantic-openai, @hintz-openai, @danial-openai, @kevinw-openai, and @mstrautmann-oai. Your spec made this build dramatically less ambiguous.

    Stack credits

    NestJS · SvelteKit · OpenTUI · TypeORM · PGlite · Bun · ui-kit (shadcn-svelte vocabulary, OKLCH tokens) · TipTap · Better-Auth · Effect.


    License

    MIT. Use it. Fork it. Ship it.


    Built local-first. Built honest. Built so the agents and the humans both ship.