{"slug": "vincent-a-local-first-control-plane-for-ai-coding-agents", "title": "vincent: a local-first control plane for AI coding agents", "summary": "A developer has released Vincent, an open-source, local-first control plane for AI coding agents. Vincent orchestrates agents from providers like Claude Code, Codex, and Cursor Agent, allowing users to manage multiple agent sessions, enforce deterministic checks, and intervene when necessary. The tool uses YAML workflows to mix agentic steps with deterministic operations and Git worktrees for task isolation.", "body_md": "AI coding agents have become surprisingly capable.\n\nBut once I started using them seriously, I ran into a different problem:\n\n**Starting an agent is easy. Managing many of them isn't.**\n\nA few tasks quickly turned into multiple terminals, repositories, branches, prompts, transcripts and agent sessions. I wanted to be able to start work, leave it running, see what every agent was doing, enforce deterministic checks, intervene when necessary, and switch between different agent providers without redesigning the whole workflow.\n\nSo I built **Vincent**.\n\n👉 [https://github.com/lezli01/vincent](https://github.com/lezli01/vincent)\n\nVincent stands for:\n\n**V** endor-**i** ndependent co**n** trol plane for exe**c** uting na**t** ive ag**ent** tooling.\n\nIt is an open-source, MIT-licensed, local-first orchestrator for AI coding-agent workloads.\n\nVincent isn't another coding agent.\n\nInstead, it sits **above the agents you already use**.\n\nCurrently it can execute:\n\nVincent uses their native CLIs and the authentication already configured on your machine. It doesn't try to replace them and it doesn't need to store their credentials.\n\nThe architecture is centered around a local daemon:\n\n```\n                 ┌─────────────┐\n                 │     TUI     │\n                 └──────┬──────┘\n                        │\n                 ┌──────▼──────┐\nCLI / scripts ──►│ Vincent     │◄── REST / SSE\n                 │ daemon      │\n                 └──────┬──────┘\n                        │\n         ┌──────────────┼──────────────┐\n         ▼              ▼              ▼\n     Claude Code      Codex        Cursor Agent\n```\n\nThe daemon owns the state, scheduling and execution.\n\nThat means I can close the TUI or terminal and the tasks continue running.\n\nOne of the biggest things I wanted was to avoid solving everything with one enormous AI prompt.\n\nVincent workflows are YAML and can mix **agentic steps with deterministic operations**.\n\nA workflow can contain things like:\n\nConceptually, you might have something like:\n\n```\nsteps:\n  - name: implement\n    agent: codex\n    prompt: |\n      Implement the requested change.\n\n  - name: test\n    run: go test ./...\n\n  - name: fix\n    if: previous.failed\n    agent: codex\n    prompt: |\n      The tests failed.\n\n      Fix the implementation based on the failure.\n```\n\nThe important part isn't the exact syntax here.\n\nIt's the separation of responsibilities.\n\nIf a compiler, test runner, linter or script can determine something reliably, I don't want to spend AI tokens asking an LLM to do it.\n\n**Use agents where reasoning is useful. Use normal software everywhere else.**\n\nThis led to another important design decision.\n\nAn agent saying:\n\n\"I've completed the task and all tests pass.\"\n\ndoesn't mean the task succeeded.\n\nVincent can use deterministic checks to decide that.\n\nIf a check fails, the actual failure can be fed back into the next attempt.\n\nSo instead of:\n\n```\nAgent: looks good!\nTask: success\n```\n\nthe model becomes closer to:\n\n```\nAgent makes change\n       ↓\nRun real verification\n       ↓\n   success?\n    /     \\\n  yes      no\n  ↓         ↓\nnext     retry with\nstep     real failure\n```\n\nThis makes agent execution much more useful for unattended workloads.\n\nParallel agents modifying the same checkout is a great way to create chaos.\n\nVincent isolates development tasks using Git worktrees.\n\nEach task gets its own:\n\nSo multiple tasks can operate against the same repository without competing over the developer's working tree.\n\nYou can also configure global and project-level concurrency limits.\n\nI don't think autonomous should mean uncontrollable.\n\nThere are situations where I explicitly want an agent to stop.\n\nVincent supports human gates, blocked tasks and intervention.\n\nFor example, a workflow can require approval before something sensitive happens.\n\nIf an execution fails, I can inspect the result and decide whether to:\n\nThere are also follow-up runs, so after an agent finishes a task I can ask it to make another change on the same branch and worktree without reconstructing the context manually.\n\nVincent includes a terminal UI because once several workloads are running, visibility becomes important.\n\nThe TUI gives me a central view of:\n\nIt's essentially the dashboard I wanted when I started running multiple coding agents simultaneously.\n\nThis is one of the less glamorous parts of agent tooling, but probably one of the more important ones.\n\nWhat happens when the orchestrator crashes halfway through a 30-minute agent task?\n\nVincent is designed around durable state.\n\nTransitions are persisted, interrupted executions can be reconciled after restart, transcripts are retained, and tasks don't simply disappear because the UI closed.\n\nI've tried to treat agent workloads more like real jobs running on an execution platform than temporary terminal sessions.\n\nI also deliberately don't want workflows tightly coupled to a single AI vendor.\n\nAn individual workflow step can choose an agent, model, reasoning effort and permissions.\n\nThat means one workflow could theoretically use different models for different parts of the job.\n\nIt also means switching your preferred agent doesn't require throwing away the orchestration layer around it.\n\nThe TUI is useful for humans, but Vincent isn't TUI-only.\n\nOperations are also available through the CLI and a localhost REST + SSE API.\n\nFor example:\n\n```\nvincent project add /path/to/repo\n\nvincent task add \\\n  --project 1 \\\n  --title \"Add a health endpoint\"\n\nvincent task ls --state running\n\nvincent workflow validate \\\n  .vincent/workflows/feature-pr.yaml\n```\n\nCommands support JSON output as well, so Vincent itself can become part of larger automation.\n\nOn macOS:\n\n```\nbrew install lezli01/tap/vincent\n```\n\nOn Windows:\n\n```\nwinget install --id lezli01.Vincent --exact\n```\n\nor:\n\n```\nscoop bucket add vincent https://github.com/lezli01/scoop-bucket\nscoop install vincent/vincent\n```\n\nWith mise:\n\n```\nmise use -g github:lezli01/vincent\n```\n\nThere are also deb/rpm packages and standalone binaries for Windows, macOS and Linux.\n\nAgentic development is moving extremely quickly.\n\nI don't think the interesting problem anymore is simply:\n\n**\"Can an LLM write this function?\"**\n\nThe problem I'm increasingly interested in is:\n\n**\"How do we turn AI agents into reliable, observable and controllable software-engineering workloads?\"**\n\nThat involves scheduling, isolation, verification, retries, state management, human gates, observability and cost management.\n\nIn other words, a lot of familiar software engineering problems — just applied to a new kind of worker.\n\nVincent is my attempt at building that layer.\n\nIt's still pre-1.0 and evolving quickly, but I already use it for my own development workflows.\n\nThe project is now MIT licensed, so you're free to use it, modify it, build on it or contribute.\n\nIf this problem sounds familiar, I'd love to hear how you're currently managing multiple coding agents.\n\nAnd if you want to try Vincent:\n\n⭐ GitHub: [https://github.com/lezli01/vincent](https://github.com/lezli01/vincent)\n\n📖 Documentation: [https://lezli01.is-a.dev/vincent/](https://lezli01.is-a.dev/vincent/)\n\nFeedback, issues and contributions are very welcome.", "url": "https://wpnews.pro/news/vincent-a-local-first-control-plane-for-ai-coding-agents", "canonical_source": "https://dev.to/lezli01/vincent-a-local-first-control-plane-for-ai-coding-agents-1i8i", "published_at": "2026-08-27 08:25:02+00:00", "updated_at": "2026-08-27 08:48:46.153215+00:00", "lang": "en", "topics": ["ai-agents", "developer-tools", "ai-infrastructure"], "entities": ["Vincent", "Claude Code", "Codex", "Cursor Agent", "Git"], "alternates": {"html": "https://wpnews.pro/news/vincent-a-local-first-control-plane-for-ai-coding-agents", "markdown": "https://wpnews.pro/news/vincent-a-local-first-control-plane-for-ai-coding-agents.md", "text": "https://wpnews.pro/news/vincent-a-local-first-control-plane-for-ai-coding-agents.txt", "jsonld": "https://wpnews.pro/news/vincent-a-local-first-control-plane-for-ai-coding-agents.jsonld"}}