Part inbox. Part junior engineer.

Triage finds the work.
Junior finishes it.

Triage watches GitHub, Slack, Linear and your other tools. It brings you what needs you. The rest goes to Junior, your AI junior engineer. It runs on your Mac, learns how you work, and needs you a little less each week.

curl -fsSL https://usetriage.sh/install.sh | sh

Installs Triage.app for macOS, Apple silicon or Intel. Read install.sh first. We would.

Triage watches GitHub, Slack, Linear and anything with an MCP server.

Where work arrives 0 new

  • Priya requested your reviewacme/api#512

  • CI failed on mainacme/api#498

  • @you where do staging secrets live?#platform

  • Postgres 16: this sprint or next?PLAT-88

  • TypeError in checkout.ts, 41 eventsvia MCP

Triage watching

  1. ReviewRewrite session authnew

  2. DecidePostgres 16: this sprint or next?new

  3. FixCI red on #498new

  4. ReplyWhere do staging secrets live?new

  5. FixTypeError in checkout.tsnew

Same rules every time. No guessing.

Junior ready

  • Fix CI on #498Queued

  • Reply in #platformQueued

  • TypeError in checkout.tsQueued

Waiting for your OK 2

Push to acme/apifix/flaky-auth-test · +14 −3Approve

Reply in #platform4 lines, draftedApprove

Sent without your OK: 0

Example work. Your Tuesday will have more of it.

Why Triage

Triage brings you what needs you. Junior takes what doesn’t. On your Mac, with your tools, and it asks before anything goes out.

Needs you 2

Rewrite session authReview · 2 people waiting

Postgres 16: this sprint or next?Decide · blocks 3 tickets

That’s the whole list.

Only what needs you

GitHub, Slack, Linear and anything with an MCP server, in one ranked list. Each item says why it’s there. People waiting go to the top.

Junior’s 3

CI red on #498Fixed locally · push waits for you

Reply in #platformDrafted · waits for you

Dependency bumps3 PRs drafted · none opened

The rest goes to Junior

Junior fixes, retries and waits on CI. It drafts replies and runs your chores on a schedule. You approve what goes out.

Your MacBook Online

Claude Codeyour login · your plan

Codexyour login · for chats

Data in ~/.triage

Your Mac, your plan

Junior runs on your Mac, on the Claude Code or Codex plan you already pay for. No API keys to paste. No bill from us.

How it works

Three steps. One of them is reading a shell script.

  1. [01]

    Install the Mac app

    One line in Terminal. The app isn’t notarized yet, so read install.sh first. We would.

    $ curl -fsSL usetriage.sh/install.sh | sh

    → Triage.app installed

    → triage, triage-mcp in ~/.local/bin

  2. [02]

    Connect your tools

    GitHub and Slack out of the box. Anything with an MCP server through a job. Triage uses the logins you already have.

    GitHubvia ghOffOn

    Slackvia your connectorOffOn

    Linearthrough a jobOffOn

    Sentrythrough a jobOffOn

  3. [03]

    Hand Junior the rest

    One line, not an essay. Junior reads it back, plans, then works. You approve what goes out.

    Bump the deps, same as last week.

    Patch versions only, PRs wait for you. Same as last week.

Hand-offs

Nothing goes out without you. Junior plans first and asks before anything goes out.

  1. A pointer, not an essay. “Fix the flaky test on #498” is plenty. Junior opens the PR, the logs and the history itself.

  2. Everything it needs, in one message, each question with a suggested answer. Often you just say yes.

  3. You review the plan like a PR. Small jobs skip this, because nobody needs a plan for a typo.

  4. Edits, tests and local commits don’t need your OK. They stay on your machine until you say otherwise.

  5. Pushes, PRs, comments and messages wait for you, word for word. Junior has never posted in #general on its own. It isn’t allowed to.

Fix the flaky test on #498.

Features

The rest of the job. What happens between the inbox and the push.

Today. Your morning, already sorted.

Junior’s morning brief and a shared plan for the day: what’s yours, what’s Junior’s, what’s overdue.

Today Tuesday

Review session authYouJunior

Fix CI on #498YouJunior

Decide on Postgres 16YouJunior

Dependency bumpsYouJunior

Goals. Hand over the outcome, not the steps.

Give Junior a done-when. It waits on CI and reviewers, fixes and retries, and stops at your budget.

Goal round 2

#498 is merged with checks green.

Waiting on CIwakes in 6 min

Budget$1.84 of $5

Gateyou approve the push

Jobs. Chores that do themselves.

Standing assignments on a schedule, set up by chatting with Junior. Each one gets a trial run before you turn it on.

Weekly dependency bumpsMondays at 9:00OffOn

Flaky test reportWeekdays at 8:30OffOn

Release notes draftFridays at 16:00 · trial run firstOffOn

Briefs. Never open a PR cold.

Ask for a brief and start with the context. It reads the diff, the thread and the history, and says where to look first.

Brief acme/api#512

Verdict
Approve after one fix
Look at
session.ts, lines 88–120
Blast radius
Every logged-in request

Over time

Over time, Junior takes work end to end. Junior starts with the legwork. As it learns how you work, it takes on more of each job, until it can go from the issue to a merged PR.

  1. Find the issueTriage
  2. Write the fixJunior, you review the diff
  3. Open the PRJunior drafts it, you approve
  4. Get it greenJunior fixes CI, you approve replies
  5. MergeYou

Here’s the diff. Push it?

This is Junior today. Every push waits for you.

Only Day 1 is built. The other two tabs are the plan, and they say so.

Fit check

Who it’s for

Senior and staff engineers, and tech leads who still write code. They use Claude Code or Codex every day, work on a Mac, and have teammates waiting on them.

Not for (yet)

Teams that want a shared fleet of cloud agents, people who want AI to act without review, and anyone not on a Mac.

Better you read that here than after the install.

FAQ

Fair questions.

The short answers. The long ones are in the README.

Will Junior post as me?

Not without your OK. Pushes, PRs, comments and messages wait for you, word for word. Edits, tests and local commits don’t need it, because they stay on your Mac.

Will Junior replace me?

It asks before it pushes a branch. You’re fine.

Does it work while my Mac sleeps?

No. Junior runs on your Mac and stops when it sleeps, like the rest of us. Triage starts again after a reboot. Scheduled jobs that couldn’t run are recorded as missed, not quietly dropped.

What do I need?

A Mac, Apple silicon or Intel. Claude Code, installed and logged in. Codex works too, for chats.

Which tools can it watch?

GitHub and Slack out of the box. Linear, Sentry, Notion or anything with an MCP server comes in through a job. You set up a job by chatting with Junior.

Where does my data live?

On your Mac, under ~/.triage. Triage holds no GitHub, Slack or Linear credentials; it uses the logins you already have. What you send to Claude, Codex or a connector still goes to that service. We won’t pretend otherwise.

What does it cost?

Nothing. Triage is free and open source, under the MIT licence. Junior runs on your own Claude or Codex plan, and each session shows what it cost, in dollars.

Why install from Terminal?

The app isn’t notarized by Apple yet, so a browser download would get blocked. The script installs it properly. Read install.sh first. We would.

Ask anything else on GitHub

Let Triage do the triage.

One line installs it. Free and open source, on the Claude Code or Codex plan you already pay for. No account, no card.

curl -fsSL https://usetriage.sh/install.sh | sh
Read install.sh first