Raw capture โ€” raw/speedrift-ecosystem.md


url: https://github.com/dbmcco/speedrift-ecosystem date_fetched: 2026-07-05 backfilled: true


Speedrift is an operations control plane for agent-run software work.

Each repo keeps its own Workgraph as the source of truth. Speedrift watches those repo graphs, detects stalls and drift, plans bounded corrective actions, dispatches agents when policy allows, and writes every decision back to tasks, logs, and ledgers.

Bounded autonomy means Speedrift can restart safe services, emit corrective tasks, and run deterministic handlers under policy. It cannot rewrite unrelated local work without a trace, bypass verification gates, or perform destructive git history operations.

Open the public story deck: Speedrift Ecosystem Story

If you only skim one thing, open the story deck above. It is the fastest way to see how Speedrift keeps local Workgraphs authoritative while a central control plane observes the repo portfolio, chooses bounded safe actions, and writes decisions back into repo tasks and ledgers.

Example: if a repo has ready work but no heartbeat, Speedrift can notice the stall, score the risk, create or dispatch a bounded follow-up task, and record the decision without rewriting unrelated local work.

Before Now
Repo-local lane runner Multi-repo operating fabric
Human polls many repos manually Daemonized control plane supervises all tracked repos
Drift checks as one-off commands Continuous cycle: observe -> prioritize -> plan -> execute -> record
Visibility lives in scattered logs Live dashboard + websocket + ledgers
Upstream contribution is ad hoc Structured upstream candidate pipeline
Generic agent prompts at dispatch Agency-composed role configuration per task
Layer Systems Owns
Execution layer Workgraph + Agency Whoruns a task: task spine, agent identity, role composition, capability primitives
Judgment layer Planforge + Speedrift/Driftdriver Whatto do: task contracts, drift checks, protocol wrapping, quality enforcement

Agency composes agent configurations; planforge wraps them with speedrift protocol envelopes (wg-contract blocks, drift check obligations, executor guidance). These two concerns are cleanly separated โ€” Agency never needs speedrift primitives; planforge never manages agent composition internals.

Build an autonomous dark-factory workflow that:

Lives inside each repo:

Runs centrally from this repo:

The task execution layer lives inside the worker plane:

At dispatch time Agency composes the agent configuration for a task. Planforge/speedrift wrap the result with the speedrift protocol envelope (wg-contract block, executor guidance, drift check obligations). The two concerns stay separated: Agency never needs speedrift primitives; planforge never manages agent composition internals.

Agency runs as an always-on launchd service on port 8000. If unreachable, all dispatch continues with generic prompts โ€” Agency enriches but is never required.

Execution engines used in repos:

Workers consume ready tasks, run checks, and write outcomes back to local graph state.

Dashboard should always show active mode.

This repository is the ecosystem control repo, not a normal product/app repo.

The operator view should be ordered as:

Interaction rules:

Repo cards should include a short reason line for watch or at-risk, such as:

This makes non-active repos explainable instead of silent.

Track and visualize:

Graph direction consistency is layout-dependent; semantics come from edge metadata, not visual orientation.

The ecosystem hub builds its repo set from two sources:

The hub should surface the full matching set within the activity horizon, not an arbitrary truncated sample.

Core lane family:

Ecosystem control modules:

Imported external repos are not just pull targets. The ecosystem should continuously produce upstream candidate packets:

Speedrift now tracks upstream adoption lag explicitly, so coding-agent commit volume does not let important WorkGraph changes disappear into a long backlog.

The sentinel runs from driftdriver and records three pieces of state:

The current WorkGraph policy is intentionally tight:

Operator entry points:

cd /Users/braydon/projects/experiments/driftdriver
# one sentinel pass
uv run driftdriver --dir "$PWD" upstream-tracker --json
# docs
open docs/upstream-adoption-sentinel.md

The ecosystem hub runs the sentinel every collector tick, and scripts/daily_ecosystem_eval.sh runs it before broader ecosystem review.

Show formulas and illustrative values, not production data:

Always pair each metric with:

northstardrift is the module that should compute these scorecards, detect regressions, and emit model-mediated follow-up prompts/tasks from them. Design contract: docs/northstardrift.md

Speedrift model routing should use central route names in generated plans, but the current PI-selectable local-model inventory is documented for planner, Agency, and drift-policy work in docs/local-model-routing-baseline-20260617.md.

Current routing posture:

Run the ecosystem daemon continuously and codify the port. The live setup is launchd-managed so it survives shell exits and restarts automatically.

From driftdriver repo:

ECOSYSTEM_HUB_CENTRAL_REPO=/Users/braydon/projects/experiments/speedrift-ecosystem/.workgraph/service/ecosystem-central \
  scripts/ecosystem_hub_daemon.sh install-launchd
scripts/ecosystem_hub_daemon.sh status
scripts/ecosystem_hub_daemon.sh launchd-status

LaunchAgent contract:

Default endpoint contract:

pipx install git+https://github.com/dbmcco/driftdriver.git
pipx install git+https://github.com/dbmcco/coredrift.git
pipx install git+https://github.com/dbmcco/specdrift.git
pipx install git+https://github.com/dbmcco/datadrift.git
pipx install git+https://github.com/dbmcco/depsdrift.git
pipx install git+https://github.com/dbmcco/uxdrift.git
pipx install git+https://github.com/dbmcco/therapydrift.git
pipx install git+https://github.com/dbmcco/yagnidrift.git
pipx install git+https://github.com/dbmcco/redrift.git

Agency is the agent composition engine that pairs with workgraph. Install once per machine.

# Install
pipx install git+https://github.com/agentbureau/agency.git --python python3.14
# Initialize primitive pool and configuration
agency init
# Load the launchd service (always-on, port 8000)
launchctl load ~/Library/LaunchAgents/com.braydon.agency-serve.plist
# Verify
curl -s http://localhost:8000/health | python3 -m json.tool

The launchd plist is in driftdriver/plists/com.braydon.agency-serve.plist. Agency uses Ollama qwen3-embedding:8b for embeddings โ€” no separate embedding service needed.

wg init
driftdriver install --all-clis --wrapper-mode portable
./.workgraph/coredrift ensure-contracts --apply

In .workgraph/drift-policy.toml:

[factory]
enabled = true
plan_only = false
emit_followups = true
hard_stop_on_failed_verification = true
[sessiondriver]
enabled = true
require_session_driver = true
allow_cli_fallback = false
max_dispatch_per_repo = 2
worker_timeout_seconds = 1800
drift_failure_threshold = 3
[secdrift]
enabled = true
emit_review_tasks = true
[qadrift]
enabled = true
emit_review_tasks = true
[plandrift]
enabled = true
emit_review_tasks = true
require_integration_tests = true
require_e2e_tests = true
require_failure_loopbacks = true
require_continuation_edges = true
continuation_runtime = "double-shot-latte"
orchestration_runtime = "claude-session-driver"
allow_tmux_fallback = true
[northstardrift]
enabled = true
emit_review_tasks = true
emit_operator_prompts = true
daily_rollup = true
weekly_trends = true
score_window = "1d"
comparison_window = "7d"
dirty_repo_blocks_auto_mutation = true

Use the launchd-backed daemon wrapper for always-on supervision:

cd /Users/braydon/projects/experiments/driftdriver
ECOSYSTEM_HUB_CENTRAL_REPO=/Users/braydon/projects/experiments/speedrift-ecosystem/.workgraph/service/ecosystem-central \
  scripts/ecosystem_hub_daemon.sh install-launchd
scripts/ecosystem_hub_daemon.sh status
scripts/ecosystem_hub_daemon.sh launchd-status
scripts/ecosystem_hub_daemon.sh logs

ensure-running is safe to run repeatedly if an agent only needs to repair or confirm the service:

scripts/ecosystem_hub_daemon.sh ensure-runningFrom this repo:

./scripts/verify_model_routing_policy.sh
./scripts/verify_speedrift_vnext_policy.sh
./scripts/verify_ecosystem.sh
./scripts/public_smoke_check.sh

verify_speedrift_vnext_policy.sh discovers the PlanForge schema from the workspace checkout. Set PLANFORGE_SCHEMA_PATH=/path/to/planforge-plan-v2.schema.json when running it from a different layout.

Canonical suite map: ecosystem.toml

Primary Speedrift-owned repos:

Ecosystem dependencies watched by the upstream sentinel:

Speedrift builds on and is deeply grateful to the following upstream projects:

Workgraph โ€” graphwork

The task graph spine that everything runs on. Workgraph provides dependency tracking, agent dispatch loops, coordinator messaging, and the worker service model. Speedrift wraps and extends Workgraph but does not replace it โ€” wg is the runtime source of truth for all task state. We maintain a fork at dbmcco/workgraph and track upstream continuously via upstream_tracker.py.

Agency โ€” agentbureau

The agent composition engine that forms the other half of the execution layer. Agency owns agent identity, role composition, capability primitive matching, and trade-off tuning. It runs as an always-on service that Speedrift integrates with at dispatch time โ€” Agency composes who runs a task; Speedrift/planforge determines what to do and wraps the result with the protocol envelope. We install Agency via pipx and patch embedding.py to use the ecosystem's shared Ollama embedding service instead of bundled HuggingFace models.

Freshell โ€” Dan Shapiro

A browser-based terminal that gives agents and operators a persistent PTY session accessible over the web. Used in the ecosystem hub for live terminal access to any enrolled repo. We run it at port 3550 and track upstream for upgrades. Maintained as a fork at dbmcco/freshell.

If you build something useful on top of these projects, contribute upstream.