The desktop app for every Agent
Threads per project, approvals you can read, and a task board that hands work to the agent in its own worktree.
Add retry with backoff to the sync worker. It falls over on 429s.
Ask for changes, send follow-ups…
Oniko talks to Claude Code over the Agent Client Protocol. Every tool call is visible, every risky command waits for your yes, and your backlog becomes branches with pull requests.
Every tool call in plain sight. Nothing runs behind your back.
Add retry with backoff to the sync worker, then run its tests.
- Readsrc/sync/worker.ts
- SearchfetchPage( in src/
- Editsrc/sync/worker.ts
Allow this action?
pnpm vitest run src/sync
Approvals with the exact command. A permission request waits in the thread with what will run and the agent's options: allow once, allow similar commands, or refuse. Threads reattach to their Claude session after a restart.
export async function syncPage(cursor: string) {- const page = await fetchPage(cursor)+ const page = await withRetry(() => fetchPage(cursor), {+ retries: 4,+ backoffMs: (attempt) => 250 * 2 ** attempt,+ retryOn: (error) => error.status === 429,
Diffs, not walls of text. Tool runs fold into one line. File edits open as diffs.
Write the migration for the new index
Mode, model and effort per thread. Picked in the composer, remembered per subscription.
Work and personal Claude, one window.
Each subscription is a Claude config folder, like ~/.claude. Folders already on your machine are suggested when you add one.
- Live account status
- Email, plan and organization for each login, checked with claude auth status.
- Signed out?
- Oniko shows the exact claude auth login command for that folder.
- Threads keep their account
- Switching the active subscription only affects new threads and tasks.
Authenticated · Max plan
Authenticated · Max plan
Signed out. Run claude auth login for this folder.
Subscriptions
Move a task to To do. Get a pull request back.
Every project gets Linear-style tasks in a list or a board, with statuses you can rename, add or remove.
- ONI-12Add retry to the sync workerBack off on 429s from the API.2m
- ONI-9Show unread counts in the sidebarOct 27
- ONI-14Paginate the activity feedCursor based, 50 per page.Oct 28
- ONI-15Export threads as MarkdownOct 26
- ONI-16Keyboard shortcut for New threadOct 26
- ONI-8Fix the login form validationEmpty passwords passed the client check.Oct 25
- 1
Move it to To do
Any status marked Not started puts an agent on the task, on its subscription.
- 2
It gets a worktree
A branch named after the task, checked out under ~/.oniko/worktrees, with its own thread.
- 3
You get a pull request
With Open a pull request on, the agent pushes and runs gh pr create after its first turn.
~/.oniko/worktrees/sync-service/oni-14-paginate…
ONI-12 needs your approval
2m agopnpm vitest run src/sync
ONI-9: the agent finished
1h agoShow unread counts in the sidebar
ONI-8: pull request merged
3h agoFix the login form validation
Click a notification to jump to the task's thread.
Your threads stay on your machine. Telemetry stays anonymous.
Oniko reports a little anonymous data so crashes get fixed on the hardware people really use. Turn it off in Settings at any time.
What we collect
- OS version and architecture
- CPU, memory, GPU and displays
- Crash and error reports
What we never collect
- Your name, email or IP
- Prompts, threads or code
- Claude account details
Questions
Get Oniko first
Oniko for macOS isn't out yet. Leave your email and we'll write when it's ready to install.