| .forgejo/workflows | ||
| apps/patch | ||
| docs | ||
| flows/patch-moi-harness | ||
| harness | ||
| .dockerignore | ||
| .gitignore | ||
| .gitmodules | ||
| bun.lock | ||
| Dockerfile | ||
| package.json | ||
| README.md | ||
patch.moi
Git-first maintenance control plane for custom patches on top of upstream open source software.
Canonical public host: https://patch.moi.
Repository
This is a Bun monorepo:
apps/patch: the Patch service, feed poller, JSONL store, Discord output, and workspace backend adapter.docs: Tome documentation site for patch.moi.
patch.moi treats Git as the source of truth for maintained projects. Upstream and fork remotes, patch branches, tags, and commits describe the patch stack. Patch records update intake, dispatch attempts, and operational history around those Git facts.
Endpoints
GET /healthz
GET /flow-events
GET /flow-events/:id
POST /flow-events/:id/retry
POST /flow-events/:id/replay
GET /maintenance-attempts
GET /workspace-dispatches
GET /workspace-events
GET /workspace-runs
Environment
HOST=0.0.0.0
PORT=3000
DATA_DIR=./data
DISCORD_OUTPUT_ENABLED=false
DISCORD_WEBHOOK_URL=
DISCORD_NOTIFY_EVENTS=push,release
FEED_SOURCES_PATH=./feed-sources.json
PATCH_WORKSPACE_BACKEND_URL=
PATCH_WORKSPACE_BACKEND_SECRET=
PATCH_FLOW_BACKEND_URL=
PATCH_FLOW_DISPATCH_URL=
PATCH_FLOW_DISPATCH_SECRET=
PATCH_ADMIN_TOKEN=
Discord notifications are off by default. Set DISCORD_OUTPUT_ENABLED=true
and DISCORD_WEBHOOK_URL to send Discord output. DISCORD_NOTIFY_EVENTS is a
comma-separated allow list and defaults to push,release.
Development
bun install
bun run check
bun run dev
Feed watcher events are configured in apps/patch/feed-sources.json. The first
poll primes DATA_DIR/feed-state.json; later polls append upstream activity to
DATA_DIR/feed-events.jsonl. Targets using mode: "fork_sync" append legacy
work to DATA_DIR/feed-jobs.jsonl. Targets using mode: "workspace_flow"
append generic flow events to DATA_DIR/flow-events.jsonl, send them to the
configured workspace backend or local adapter, and record dispatch outcomes in
DATA_DIR/workspace-dispatches.jsonl. Each dispatch also creates a
patch.moi-owned DATA_DIR/maintenance-attempts.jsonl entry that links the
upstream update to workspace run ids and future candidate refs.
Documentation
The publishable docs site is a Tome project in docs/:
bun run docs:dev
bun run docs:build
Docs source follows the Diataxis framework under docs/pages/tutorials,
docs/pages/guides, docs/pages/reference, and docs/pages/concepts.