Early preview — open source and moving fast. Follow releases on GitHub →
An open-source work inbox for engineers

Know what needs you.Hand it straight to Claude.

The work that needs you is scattered — review requests on GitHub, mentions on Slack, threads waiting on a reply. Triage collects it through the logins you already have, ranks it into one inbox on your machine, and hands any item to your locally installed Claude Code with the context already read.

$ npm i -g @hey-triage/triage
$ triage # opens http://localhost:5178

Open source · runs on your machine · no API key — it uses your Claude Code login

Inbox4 need you · ranked a moment ago
GitHub · review requestedSlack · #payments

payments: make retries idempotent — PR #4182

Review requested 2h ago · also raised in #payments — merged into one card

Dispatch to Claude
Slack · mention

@you — “can you sanity-check the ingest lag on the eu shard?”

Mentioned in #platform-oncall · 40m ago

GitHub · your PR

fix: cursor pagination on the audit log — PR #4179

CI failed on main · needs a rebase

Watch match

“anyone tried the new deploy runner yet?”

Matched your watch on #infra · ranked below direct asks

One list, every source. Ranked by code, not by a model — and any item is one key from a Claude Code session that has already read it.

Why Triage

Less hunting. More fixing.

Start with an answer, not a search

Open one tab and see everything that needs you, most important first. No more sweeping GitHub notifications, Slack channels and DMs to assemble the list yourself.

Skip the context hand-off

Press one key and Claude Code opens in the right repo, having already read the PR or thread. You start at “what should we do about it”, not at pasting links and re-explaining.

Let nothing slip

Done and snoozed items stay handled — and quietly return if their source changes. Watches tell you when something you care about happens in a channel you don’t read.


How it works

01

Collect

Review requests and your open PRs from GitHub, mentions and reply-pending threads from Slack — read through the logins you already have. Triage itself never holds a credential.

02

Rank

Scoring is deterministic code: mentions and review requests outrank topical matches, and items that reference the same PR merge into one card with both sources shown. No model sits in the ranking path, so the order is explainable and repeatable.

03

Dispatch

One key hands the item's full context to a real Claude Code session, opened in the right project folder. You arrive at a conversation that has already read the thread.

Watches

Ask for what matters, in a sentence.

A watch is one plain-English instruction scoped to a channel or DM — hourly, daily or weekly. Before it exists, a required preview runs it against the scope's last week and shows every match with a one-line reason, so you know exactly what it will and won't surface.

The model only answers "does this match, and why". Identity, de-duplication, scheduling and scoring stay in code.

“Tell me when someone in #platform-oncall asks about the ingest pipeline.”

"anyone know why ingest is lagging on the eu shard?"

Match — asks about the pipeline by name

"ingest backfill PR #2201 needs a look"

Match — shares a ref with an open review request

"lunch?"

Skipped — no relation to the instruction


Sessions

Claude Code, with a place to live.

Sessions that survive the page

Each session is a long-lived Claude Code process in the folder you choose. Close the tab, come back, and the transcript restores; the agent resumes where it stopped.

Permissions in the browser

Tool-use prompts surface as Allow / Deny in the UI. Your existing allowlists apply first — only unmatched tools ask.

Your connectors, your plugins

Sessions load your user, project and local settings, so claude.ai connectors and installed plugins work exactly as they do in an interactive session.

Done, snooze, dismiss

Your decisions live in their own table and survive every re-sync. A done item whose source changes afterwards quietly returns.

A command palette, not a manual

One shortcut opens everything: pages, actions, a new session in any folder, dispatching the item under your cursor.

Open to anything

The ingestion API is exposed as MCP tools, so any script or scheduled agent can feed the inbox — every rule enforced server-side.

Local by construction

No API keys

It runs on your existing Claude Code login and never holds a credential of its own.

localhost only

The server binds to your machine and nowhere else. Nothing is exposed, nothing phones home.

One SQLite file

Inbox, sessions and history live in ~/.triage/ — yours to inspect, back up or delete.

Ranking is code

Deterministic scoring decides the order — explainable, repeatable, never a model's mood.

On your machine in a minute.

One global install. The server binds to localhost, keeps its data in ~/.triage/, and opens a web UI in your browser.

$ npm i -g @hey-triage/triage
$ triage # → http://localhost:5178
  • Node 22.5 or newer
  • Claude Code installed and logged in
  • Optional: GitHub CLI for the GitHub source, the claude.ai Slack connector for Slack

Early software — a young project moving fast. Expect rough edges and breaking changes between minor versions.


FAQ

Frequently asked questions

Does my code or Slack data leave my machine?

No. Triage runs on localhost, reads sources through the logins you already have, and keeps everything in a SQLite file under ~/.triage/. Nothing is exposed and nothing phones home.

Do I need an Anthropic API key?

No. Triage drives your locally installed Claude Code and uses its existing login — it never holds a credential of its own.

What sources can feed the inbox?

GitHub (review requests and your open PRs, via the GitHub CLI) and Slack (mentions and reply-pending threads, via the claude.ai Slack connector). Beyond that, the ingestion API is exposed as MCP tools, so any script or scheduled agent can add items.

How is the order decided?

By deterministic code, not a model. Mentions and review requests outrank topical matches, and items referencing the same PR merge into one card. The same inputs always produce the same order, and every rank is explainable.

What does it cost?

Triage is open source and free. Claude usage happens through your existing Claude Code plan, same as running it in a terminal.

Know what needs you.

$ npm i -g @hey-triage/triage