{"slug": "the-terminal-should-not-own-the-work", "title": "The terminal should not own the work", "summary": "Vincent moves agentic task ownership from the terminal into a background daemon that owns task state, workflow execution, agent processes, scheduling, the database, and git worktrees, with the TUI, CLI, and API acting only as clients. The daemon persists each state transition before acting, so a restart records the interrupted attempt, verifies any orphaned process before stopping it, and reruns the step without consuming a failure retry. Installing the daemon as a user service lets the operating system start the control plane across logins, decoupling long-running agentic coding workloads from the lifetime of the interface that launched them.", "body_md": "# The terminal should not own the work\n\nA terminal is a good place to start a process. It is a poor place to store the truth about that process.\n\nWhen an agentic task belongs to one terminal tab, the tab becomes an accidental control plane. Closing it can stop the work. Losing scrollback can erase the useful explanation. Reopening the project means reconstructing what ran, which branch it changed, and whether it was waiting, finished, or quietly stuck. The longer the task runs, the more fragile that arrangement feels.\n\nVincent moves ownership into a background daemon. The daemon owns task state, workflow execution, agent processes, scheduling, the database, and git worktrees. The TUI, CLI, and API are clients of that state. Closing any client changes nothing about the work behind it.\n\nThat architectural choice has consequences that are easy to feel. I can start a task, close the TUI, use the terminal for something else, and return later to the same state and history. Several clients can inspect the same daemon without becoming competing writers. The scheduler can admit tasks by priority and concurrency limits even when nobody has a dashboard open.\n\nDurability also changes how interruption is handled. Vincent persists a state transition before acting on it. If the daemon stops during a step, restart recovery records the interrupted attempt, verifies any orphaned process before stopping it, and runs the step again without consuming a failure retry. The system does not pretend that a process survives a machine restart; it makes the interruption explicit and recovers from known state.\n\nInstalling the daemon as a user service extends the same model across logins. The operating system starts the control plane, and the terminal returns to being what it should be: one optional window into the work.\n\nThis matters because agentic coding is increasingly a workload rather than a conversation. Tasks wait on quotas, gates, retries, child branches, and external checks. Their lifetime should not be coupled to the lifetime of the interface that launched them.\n\nThe terminal can show the work. It should not own the work.", "url": "https://wpnews.pro/news/the-terminal-should-not-own-the-work", "canonical_source": "https://lezli01.is-a.dev/vincent/docs/why/the-terminal-should-not-own-the-work.html", "published_at": "2026-09-15 08:40:19+00:00", "updated_at": "2026-09-15 09:10:04.058774+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "ai-infrastructure"], "entities": ["Vincent"], "alternates": {"html": "https://wpnews.pro/news/the-terminal-should-not-own-the-work", "markdown": "https://wpnews.pro/news/the-terminal-should-not-own-the-work.md", "text": "https://wpnews.pro/news/the-terminal-should-not-own-the-work.txt", "jsonld": "https://wpnews.pro/news/the-terminal-should-not-own-the-work.jsonld"}}