← Back to index
Desktop AppTechnical Project2026

Desktop app that communicates with your harness to identify upcoming blockers for your agents that require human review and facilitation. The orc counts your tasks and grunts "work work" until you acknowledge the blocker exists.

Type
Technical Project
Year
2026
Role
Engineer
Year
2026
PythonRustTauri V2Reactntfy

The resource loop, flipped

Inspired by Warcraft III orc voice lines — "Work work." "Ready to work." "Something need doing?" — workwork flips the RTS resource loop on its head. In the age of AI coding agents, the bots do the building and you're the bottleneck.

The agent is the commander issuing build orders; you're the peon it's waiting on — the one who has to go gather the resources that gate the next step: provision the infra, click the OAuth consent, sign the cert, plug in the flaky hardware. workwork tracks the manual-labor blockers your agents hand back, ranks which project is closest to needing you, and — like a grumpy grunt tapping its club — barks the moment there's work work to do.

The bots do the building; you're the peon they're waiting on.

Speaks your agent's language

workwork ships as a Model Context Protocol (MCP) server that your LLM harness — Claude Code or any MCP-capable agent — connects to directly. When an agent hits a wall it can't climb without a human, instead of silently stalling it calls a workwork MCP tool to file a structured blocker: what's needed, which project and phase it's gating, how close that project is to handoff.

Those calls (plus step completions, phase reports, and session telemetry streamed over async localhost from the harness's hooks) are appended as raw events into a shared SQLite (WAL) database. That database is the contract between the two processes — a strict CQRS split where the Python/FastMCP write side only ever appends, and the desktop read side only ever derives.

War Map and War Room

On the other side of that contract sits a Tauri v2 + React/TypeScript desktop app that turns the raw event stream into something you can act on. A Rust core watches the DB (a notify filesystem watch gated by SQLite's data_version, with a poll backstop, all debounced into a single refresh event), derives each project's status and proximity-to-handoff, and renders a ranked "War Map" plus a live War Room of active agent sessions.

When a blocker lands it dispatches across every channel that can reach you — system tray, native Windows toast, a mutable orc-voice bark, and an ntfy push to your phone — and every one of those notifications deep-links back through a workwork://blocker/<id> route, so a single tap drops you exactly where the work is. The whole thing is local-first: no cloud, no account, your data never leaves the machine.

PythonRustTauri V2Reactntfy
More projects