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.

work

Add retry with backoff to the sync worker. It falls over on 429s.

Ask for changes, send follow-ups…

workManualOpus 5.5

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.

Ran 3 tools
  • Readsrc/sync/worker.ts
  • SearchfetchPage( in src/
  • Editsrc/sync/worker.ts
Retry is in. Running the sync tests next.

Allow this action?

pnpm vitest run src/sync

Approval required
YesYes, and allow pnpm vitest * commandsNo

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.

src/sync/worker.ts+4-1
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

workManualOpus 5.5

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.
work~/.claude

Authenticated · Max plan

personal~/.claude-personal

Authenticated · Max plan

client~/.claude-client

Signed out. Run claude auth login for this folder.

Subscriptions

workme@work.dev · Max plan
personalme@personal.dev · Max plan
Manage subscriptions…
workme@work.dev

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.

All tasks8New task
In progress2
  • ONI-12Add retry to the sync worker2m
  • ONI-9Show unread counts in the sidebarOct 27
To do0
    Backlog3
    • ONI-14Paginate the activity feedOct 28
    • ONI-15Export threads as MarkdownOct 26
    • ONI-16Keyboard shortcut for New threadOct 26
    Done1
    • ONI-8Fix the login form validationOct 25
    1. 1

      Move it to To do

      Any status marked Not started puts an agent on the task, on its subscription.

    2. 2

      It gets a worktree

      A branch named after the task, checked out under ~/.oniko/worktrees, with its own thread.

    3. 3

      You get a pull request

      With Open a pull request on, the agent pushes and runs gh pr create after its first turn.

    No worktree until an agent picks up the task

    ~/.oniko/worktrees/sync-service/oni-14-paginate…

    • ONI-12 needs your approval

      2m ago

      pnpm vitest run src/sync

    • ONI-9: the agent finished

      1h ago

      Show unread counts in the sidebar

    • ONI-8: pull request merged

      3h ago

      Fix 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.