Spoon
Self-hostable fork maintenance with Threads

Fork freely & keep them all intimately close to upstream.

Spoon is a self-hostable maintenance cockpit for forks. It watches upstream, understands your fork-only changes, opens threads when decisions are needed, and helps keep your managed forks close without asking you to support them alone.

GitHub App backedThread-first maintenanceOpenCode workspacesDraft PR workflow

Upstream moved

Spoon checks default branches and compares the fork network.

Live flow

Raw upstream ahead

3 commits

Fork-only work

5 commits

Status

Needs thread

usesend-authentik

usesend/usesend -> gibbyb/usesend

daily check
Compare upstream maincomplete
Detect fork-only commitscustom auth work
fork stays source of truthdecisions stay threadedworkspace opens when needed
Workflow

Forking should start a relationship, not a support burden.

Spoon keeps watching the upstream project after the fork. When upstream moves, it decides whether your fork can fast-forward, needs a maintenance thread, or should ignore changes that no longer matter to your version. Forking a project should not mean supporting it alone.

Spoon keeps the conversation going

A fork is not a one-time split. Spoon keeps the fork and upstream in conversation by turning maintenance into visible, reviewable threads instead of surprise drift.

  1. 01

    Create the Spoon

    Register the upstream project, your GitHub fork, default branches, clone URLs, and any extra remotes you want visible.

  2. 02

    Watch upstream

    Spoon intermittently checks the upstream default branch and compares it against the current fork state.

  3. 03

    Auto-sync clean drift

    If the fork has no custom commits and upstream moved, Spoon can fast-forward the fork without turning it into a chore.

  4. 04

    Open a thread when it matters

    If your fork has custom commits, Spoon creates a durable maintenance thread instead of guessing.

  5. 05

    Resolve with context

    Review commits, changed files, pull requests, fork-only work, ignored upstream changes, and workspace output together.

  6. 06

    Ship through draft PRs

    When code is needed, OpenCode works in an isolated workspace and hands changes back as a draft PR.

Product surface

The maintenance cockpit for forks you actually care about.

Custom work should not mean permanent drift. Spoon keeps the operational picture clear from the first upstream check to the final draft PR.

Spoon dashboards

See drift, fork-only commits, pull requests, clone URLs, extra remotes, threads, activity, and settings for each managed fork.

Thread-first maintenance

Every review, conflict, ignore decision, and requested code change has a durable conversation attached to it.

Effective drift

Spoon shows raw upstream state and the effective maintenance state after intentional ignore decisions.

OpenCode workspaces

Open a file tree, browser editor, diff view, job logs, command panel, and thread context when a fork needs code.

Provider-owned AI

Use encrypted provider profiles: API-key providers run through OpenCode, and Codex login profiles run through the Codex CLI.

Draft PR handoff

Agent work becomes a branch and draft pull request. Spoon does not auto-merge custom forks behind your back.

Maintenance decisions

Spoon knows when to sync, when to thread, and when to stay out of the way.

No fork-only commits + upstream ahead

Auto-sync

The fork is still close enough to fast-forward.

Fork-only commits + upstream ahead

Create thread

Spoon reviews whether upstream affects custom work.

Merge conflicts

Open workspace

Resolve in an isolated worker and ship a draft PR.

Irrelevant upstream changes

Ignore intentionally

Record why those commits no longer matter to this fork.

Threads

Threads keep the whole maintenance conversation in one place.

Upstream changed, a fork drifted, a conflict appeared, or you asked for a code change. Spoon puts the reasoning, messages, workspace, artifacts, and draft PR handoff in the same thread.

Thread: Upstream auth changes landed

Source: upstream update

Waiting for review

system

Spoon found 3 upstream commits after 8f3a2c1.

assistant

These touch auth callback handling and package scripts. Your fork has Authentik-only changes in the same area.

user

Open a review PR and preserve Authentik as the only provider.

Latest job

OpenCode workspace active

Model/provider

Codex profile

PR target

fork:main

Workspace logs, diffs, checks, and the final PR stay attached to the thread.

Workspace

When a thread needs code, open a real workspace.

Spoon can expose project secrets as process env, optionally materialize an env file, run configured checks, and refuse to commit `.env*` files. The result is reviewable code, not a mystery patch.

spoon/thread/authentik-upstreamOpenCode
Workspace active

Files

apps/web/auth.ts
packages/auth/providers.ts
packages/auth/env.ts
.env.example
packages/auth/providers.tsvim mode on
01export const authProviders = [02  Authentik({03    issuer: env.AUTHENTIK_ISSUER,04    clientId: env.AUTHENTIK_CLIENT_ID,05  }),06];

+ Authentik provider

- GitHub provider fallback

Diff stays attached to the thread before the draft PR opens.

Thread

Preserve Authentik as the only provider.

I found the provider wiring and updated the env example.

Checks

lintpassed
typecheckqueued
Ownership

Self-hosted because the fork is yours.

Your fork can have local commits, private deploy settings, Gitea mirrors, CI experiments, and emergency GitHub edits. Spoon keeps that relationship with upstream visible without taking ownership away from you.

Your GitHub App

GitHub remains the active source of truth for forks, branches, compares, and draft PRs.

Your providers

AI provider profiles, API keys, and Codex auth JSON stay encrypted and selected by you.

Your secrets

Project secrets are per Spoon, redacted in logs, and refused from commits when materialized.

Your workflow

Local commits, Gitea mirrors, CI changes, and direct GitHub edits are expected parts of the loop.

Fork the project. Keep the relationship.

Create your first Spoon, connect GitHub, and let upstream maintenance become a visible thread instead of a lonely recurring chore.

Start with Spoon