One app. All your tasks. Powered by AI agents.
20x is a desktop app that turns your task list into an AI-powered workforce. Connect your tools — Linear, HubSpot, YouTrack, GitLab, Notion, Peakflo — assign tasks to AI agents, and watch them work in real time.
No cloud. No subscriptions. Everything runs on your machine.
Most AI tools make you copy-paste context between tabs. 20x flips it: your tasks come to the agents, not the other way around.
- Pull a task from Linear → AI agent picks it up, reads the context, writes the code, opens a PR
- Got a backlog of tickets? → Queue them up, agents work through them while you review
- Need human approval? → Agents pause and ask before doing anything risky
- Tasks flow in — from Linear, YouTrack, HubSpot, GitHub Issues, Notion, Peakflo Workflo, or created manually
- Triage agent — Assigns priority, coding agent (Claude Code, OpenCode, or Codex), relevant skills, and git repos
- Agent works the task — reads skills, git worktrees, and MCP servers; streams output in real time
- HITL review — Agents pause for human approval before risky actions
- Feedback loop — Skills and confidence levels are automatically updated after completion
- Overview dashboard — See task completion stats, AI autonomy metrics, and agent success rates at a glance
- Kanban task board — Tasks grouped by status with drag-and-drop support
- Workflow applications — Launch and manage workflow apps directly from the dashboard
- Presetup wizard — Guided templates to get started quickly with new applications
- Claude Code — Anthropic's official agent SDK (Claude Sonnet 4.6)
- OpenCode — Open-source coding agent
- Codex — OpenAI's agent framework (GPT-5.4)
- Live transcripts — Watch agents think and work in real time with message counts
- Human-in-the-loop — Approve risky actions before execution
- Task progress tracking — Real-time progress events during agent execution
- Linear — Pull issues, update status, post comments
- HubSpot — Sync tickets and workflows
- YouTrack — Connect JetBrains YouTrack projects and tasks
- GitLab — Full GitLab integration for task sourcing and repositories
- Notion — Sync Notion databases with full property and attachment support
- Peakflo — Connect your Peakflo Workflo tasks
- GitHub Issues — Pull issues directly from GitHub repositories
- OAuth built-in — Secure authentication flows
- Reusable instructions — Create skill templates for common patterns
- Auto-learning — Agents update skills based on feedback
- Confidence tracking — Skills improve over time
- 2-way sync — Skills synchronize bidirectionally between 20x and Workflo
- Searchable skills — Quickly find skills with built-in search
- Git worktree management — Isolated branches per task
- Repository context — Agents know which repos to work on (GitHub & GitLab)
- MCP servers — Connect Model Context Protocol tools with auto-registration
- Local-first — SQLite database, no cloud required
- Subtasks — Break tasks into subtasks with ordering and drag-and-drop reordering
- Recurring tasks — Daily, weekly, monthly schedules
- Task snoozing — Snooze tasks and have them resurface at the right time
- Rich metadata — Types, priorities, due dates, labels
- File attachments — Add context files to tasks
- Output fields — Structured task results
- Smart search — Find anything fast
- Enterprise heartbeat — Continuous health checks with GitHub preflight
- CI failure detection — Automatically detect CI pipeline failures
- State syncing — Keep task state in sync across sessions
- macOS — Full support
- Windows — Full support
- Linux — AppImage installer
- Node.js >= 22
- pnpm >= 9
- Git (for worktree features)
- GitHub CLI (optional, for GitHub repo features)
- GitLab CLI (optional, for GitLab repo features)
# Clone the repository
git clone https://github.com/peakflo/20x.git
cd 20x
# Install dependencies
pnpm installmacOS may block the app since it's not signed with an Apple Developer certificate. To open it, use one of these methods:
Option A: Right-click the app in /Applications and select Open, then confirm in the dialog.
Option B: Run in Terminal:
sudo xattr -cr /Applications/20x.appThen open the app normally.
This is not required if you build from source and run with
pnpm dev.
API Keys: Configure in Agent Settings:
- Anthropic API key for Claude Code
- OpenAI API key for OpenCode (if needed)
Database:
- Stored at
~/Library/Application Support/pf-desktop/pf-desktop.db(macOS) - Automatic backups before migrations
Integrations:
- Get OAuth credentials from Linear/HubSpot/Peakflo
- Configure in Integrations settings
- Complete OAuth flow in-app
# Start dev server
pnpm run dev
# Run tests
pnpm test
# Build for distribution
pnpm run build:mac # macOS
pnpm run build:win # Windows
pnpm run build:linux # LinuxReact UI → Zustand Store → IPC Client → Preload Bridge → Main Process → SQLite
- Renderer — React 19 + Tailwind CSS 4 + Zustand 5
- Main Process — Electron 34 + SQLite + Agent orchestration
- Security — Full context isolation, no Node.js in renderer
Session Lifecycle:
- Start — Agent assigned, skills applied, session created
- Streaming — Real-time output sent to UI
- Approval — Agent pauses for human decisions
- Completion — Results saved, task updated
See AGENTS.md for detailed architecture.
| Layer | Technology |
|---|---|
| Shell | Electron 34 |
| Build | electron-vite |
| Frontend | React 19 + Tailwind CSS 4 + Zustand 5 |
| UI Components | Radix UI primitives |
| Styling | cva + Tailwind CSS tokens |
| Icons | Lucide React |
| Font | Geist |
| Database | SQLite (better-sqlite3, WAL mode) |
| Agent SDKs | @opencode-ai/sdk, @anthropic-ai/claude-agent-sdk, @zed-industries/codex-acp |
| Testing | Vitest + happy-dom |
We welcome contributions! Here's how:
- Fork the repo
- Create a branch:
git checkout -b feature/my-feature - Write code: Follow TypeScript strict mode, ESLint, Prettier
- Add tests: Vitest tests for new features
- Commit: Use conventional commits (
feat:,fix:, etc.) - Push:
git push origin feature/my-feature - Open PR: Describe changes, ensure CI passes
- TypeScript strict mode
- Minimal Tailwind classes (prefer CSS variables)
- Use
pnpm(not npm) - Check
MEMORY.mdfor project patterns
- Issues: GitHub Issues
- Discord: https://discord.gg/fUVsqTWDxX
- All data stored locally in SQLite
- No cloud sync, no subscriptions
- Optional database encryption
- Tokens encrypted with Electron
safeStorage - Keys never exposed to renderer process
- Parameterized SQL queries only
contextIsolation: truenodeIntegration: false- External links open in system browser
- Additional integrations (Jira, Asana)
- Team collaboration (shared task sources)
- Cost tracking (token usage per session)
- Agent templates (pre-configured profiles)
- Plugin marketplace (community skills)
- Light theme
- ✅ Dashboard workspace with Kanban board and workflow apps
- ✅ Subtask support with ordering and drag-and-drop
- ✅ GitLab integration (task sourcing & repositories)
- ✅ YouTrack integration
- ✅ Notion integration with full property support
- ✅ GitHub Issues integration
- ✅ Windows and Linux platform support
- ✅ Task snoozing
- ✅ Skills 2-way sync with Workflo
- ✅ Heartbeat monitoring with CI failure detection
- ✅ Presetup wizard and dashboard templates
- ✅ Claude Sonnet 4.6 and GPT-5.4 model support
- ✅ Multi-agent support (OpenCode, Claude Code, Codex)
- ✅ Skills system with auto-learning
- ✅ Recurring tasks
- ✅ Linear, HubSpot, Peakflo integrations
- ✅ MCP server management
- ✅ Git worktree management
MIT © 2026 Peakflo
Built with Electron, React, and Anthropic Claude.



