The Problem

Solo founders increasingly rely on autonomous AI agents to execute ideas, but there is no lightweight, agent‑first task hub. Existing tools assume human‑only workflow, leaving founders to chase logs, manage credentials, and manually intervene when agents misbehave.

What This Does

mission-control supplies a Next.js front‑end plus a daemon that mediates every agent interaction. The UI lives under mission‑control/src/app/… (e.g., src/app/dashboard/page.tsx, src/app/inbox/page.tsx) and renders the Eisenhower matrix, inbox, and field‑ops panels. The background daemon starts at mission‑control/scripts/daemon/index.ts, reads daemon-config.json, and dispatches work through the pipeline in scripts/daemon/runner.ts, scheduler.ts, and dispatcher.ts. Shared adapters such as src/lib/adapters/registry.ts expose a token‑optimized API that agents use to read/write tasks, decisions, and approvals.

How It Is Wired

Execution begins with the daemon entry point scripts/daemon/index.ts. It loads configuration (scripts/daemon/config.ts), creates a logger (scripts/daemon/logger.ts), and instantiates the core loop:

  1. index.tsconfig.load() reads mission‑control/data/daemon-config.json.
  2. index.ts creates a Runner (scripts/daemon/runner.ts). The runner imports the most connected modules: logger (Ca 11, Ce 2) – centralised log output. types (Ca 11, Ce 0) – shared type definitions. * dispatcher (Ca 2, Ce 5) – decides which task handler to invoke (e.g., run-task.ts, run-inbox-respond.ts).
  3. The runner schedules work via scheduler.ts, which polls the task queue in data/tasks.json and triggers the appropriate handler.
  4. Handlers (run-task.ts, run-brain-dump-triage.ts, etc.) call the adapter layer (src/lib/adapters/registry.ts, src/lib/adapters/types.ts) to read/write JSON data and to invoke external APIs defined in the Next.js API routes (src/app/api/*).
  5. Responses flow back through the dispatcher to the logger and finally update the UI via the same JSON files that the front‑end reads (data/inbox.json, data/decisions.json).

The hub of this graph is scripts/daemon/logger.ts (11 inbound imports, 2 outbound) and scripts/daemon/types.ts (pure type hub, 7 inbound). No circular dependencies were detected, so changes to a hub module have a predictable blast radius limited to the modules that import it.

How To Use It

# Clone the repo
git clone https://github.com/moses-y/mission-control
cd mission-control

# Install dependencies (pnpm is declared in the repo)
pnpm install

# Copy example env and adjust if needed
cp mission-control/.env.example mission-control/.env   # edit .env as required

# Start the daemon (background worker)
pnpm run daemon   # script defined in mission-control/package.json

# Launch the Next.js UI
pnpm dev          # runs Next.js dev server (script defined in package.json)

The UI is reachable at http://localhost:3000. The daemon reads mission-control/data/daemon-config.json; any custom settings must be added there.

Real‑World Use

A founder adds a new idea via the “Brain Dump” page (src/app/brain-dump/page.tsx). The UI writes to data/brain-dump.json. The daemon picks up the entry, triggers run-brain-dump-triage.ts, which spawns a research agent through the adapter layer. The agent’s report lands in data/decisions.json; the founder reviews it in the “Decisions” view and approves the next step, which the daemon then translates into a task in data/tasks.json for the build agent.

Code Health & Issues

  • High – Duplicated code blocks – 1,557 repeated 6‑line fragments across 130 files (e.g., __tests__/daemon.test.ts, security.test.ts, scripts/daemon/config.ts).
  • High – Deep nesting – Max indentation depth 8 in src/app/autopilot/page.tsx and several field‑ops pages; makes control flow hard to follow.
  • High – Oversized filessrc/lib/data.ts (733 lines) and scripts/seed-infant-feeding.ts (733 lines) exceed typical maintainability thresholds.
  • Medium – High branching densityscripts/daemon/config.ts, security.ts, dispatcher.ts contain 61 branch points over 144 lines each; consider strategy tables.
  • Medium – Out‑of‑date dependencies – 9 packages lag behind the latest major releases (e.g., next ^15.3.3 vs current 16.3.1, typescript ^5.8.0 vs 7.0.2).

CI is present (.github/workflows/ci.yml), tests exist (__tests__/*.test.ts), a license file is included, and no secrets are committed. No Dockerfile is provided, so container builds must be added if required.

The Bottom Line

mission-control delivers a functional, agent‑first task console with a clear separation between UI and daemon orchestration. The codebase is usable but suffers from duplicated logic, deep nesting, and several large files, which will increase maintenance cost. It is suitable for teams comfortable refactoring TypeScript and who need a customizable, open‑source hub for AI‑agent workflows, provided they allocate effort to clean up the identified hotspots.