We're the engineering team at Peakflo (B2B fintech). We built 20x internally because we kept copy-pasting Linear tickets into Claude, manually setting up branches, and babysitting agent output across terminals. Eventually we just built the infrastructure to connect task systems to agents directly — and decided to open source it.
20x is an open-source desktop app (macOS only — Linux and Windows on the roadmap) that orchestrates AI coding agents against your existing task systems.
In practice: a Linear ticket gets pulled in → the triage agent assigns Claude Code + relevant skills → a git worktree is created for branch isolation → the agent writes code with live-streamed output → it pauses for your approval before pushing → a PR is opened.
We started with engineering tasks because current agents perform best there.
The most interesting architectural piece: Self-improving Skills. Skills are reusable instruction templates attached to task types. After each task completes, the agent proposes updates based on what worked. Over time, skills accumulate institutional knowledge, like a runbook that writes itself. Each carries a confidence score that tracks reliability over time.
This is the main differentiator versus hosted tools like Devin or Factory. Unlike those tools, 20x is local-first, open-source, and agent-agnostic — it orchestrates your existing agents rather than replacing them.
A few architectural decisions:
- Local-first: SQLite, no accounts, no cloud sync, everything on-device - Agent-agnostic: supports Claude Code, OpenCode, and Codex - Integrations: Linear, HubSpot, Peakflo, and GitHub Issues (Peakflo is listed because we dogfood it internally — it was our first integration and how we catch regressions.) - Git worktrees per task for branch isolation - Skill updates are written back after task completion
MIT licensed.
GitHub: https://github.com/peakflo/20x Demo: https://youtu.be/3zKmMz6aFek
Happy to answer questions about the architecture, tradeoffs, or what didn't work.