Bump the deps on api.
Reading it back: patch and minor bumps in acme/api, one PR, tests green first.
It reads back what you ask.
Before it starts, it says what it understood, in a line or two. A misunderstanding costs one message, not an afternoon.
Hello Nothing needs you right now.
Junior is the AI junior engineer inside Triage. It takes the work that doesn’t need you. CI fixes, review nits, replies, weekly chores. It plans first, works on your Mac, and waits for your OK before anything goes out.
curl -fsSL https://usetriage.sh/install.sh | shJunior comes with Triage. One line installs both. Read install.sh first.
The rules
Bump the deps on api.
Reading it back: patch and minor bumps in acme/api, one PR, tests green first.
Before it starts, it says what it understood, in a line or two. A misunderstanding costs one message, not an afternoon.
Two questions one message
Push when green, or wait for you?suggested: wait for me
Include the zod major bump?suggested: no, separate PR
Use suggestionsAnswer
No drip of questions. One message, and each question comes with the answer it suggests. Often you just say yes.
Waiting on you 3
Push to acme/apifix/flaky-auth-test · +14 −3
Comment on #5122 lines, drafted
Move PLAT-88 to DoneLinear
Pushes, PRs, comments, ticket moves and messages wait for you, word for word. Edits, tests and local commits don’t.
One honest footnote: Autonomy has a “Never asks” level. It’s off until you allow it in Settings. We’d leave it off.
What Junior does
Junior fixes, retries and waits on CI. You approve what goes out.
CI on #498 round 2
Round 1auth.spec.ts timed out after 500ms
Round 2waits for the refresh · 20 of 20 passed
Pushwaits for your OK
It reads the comments on your PR, makes the changes and shows you the diff before it pushes.
acme/web#301 4 of 4 nits
- const t = setTimeout(fn, 500)
+ const t = setTimeout(fn, RETRY_MS)
- // TODO: handle error
+ if (!res.ok) throw new HttpError(res)
Junior drafts them. They wait for your OK.
Reply in #platform draft
They’re in 1Password, vault “staging”. Ask #infra for access. The runbook has the rest.
Review draftEdit
Tell it the chore once. It reads the job back, asks once, saves it switched off, and offers a trial run.
Weekly dependency bumpsMondays at 9:00OffOn
Release notes draftFridays at 16:00 · saved offOffOn
Trial runTurn on
Give it a done-when, like “#498 merged with checks green”. It waits on CI and reviewers, 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
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
Dependency bumpsYouJunior
Hand-offs
A pointer, not an essay. “Fix the flaky test on #498” is plenty. Junior opens the PR, the logs and the history itself.
Everything it needs, in one message, each question with a suggested answer. Often you just say yes.
You review the plan like a PR. Small jobs skip this, because nobody needs a plan for a typo.
Edits, tests and local commits don’t need your OK. They stay on your machine until you say otherwise.
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.
Its face
HelloNothing needs you right now.
ListeningYou’re typing. It’s reading.
ThinkingReading the PR, the logs and the thread.
WorkingOn it. Nothing has left your Mac.
Needs youOne question, with its suggested answer.
DoneFinished. Anything outbound is waiting for your OK.
StuckSomething broke. It says what, instead of guessing.
AsleepYour Mac is asleep. So is Junior.
About me
Junior
Fixed the flaky test on #498. The push waits for your OK.
Locked. No setting reaches them.
Call it Junior, Kevin or “the intern”. It still asks before it pushes.
Under the hood
In your project folders. It stops when your Mac sleeps.
Your login and your plan. Codex works too, for chats.
Your MCP servers, skills and permission rules load as they do in your terminal.
In Triage.app it opens what it built in a browser pane you can watch.
From “asks before any change” to “asks before sending”. The default asks before commands.
Every session shows its cost in dollars. Goals and jobs stop at a budget.
Over time
Here’s the diff. Push it?
This is Junior today. Every push waits for you.
Junior moves up a step only when you say so.
Fit check
The second list is the plan. The first one isn’t moving.
FAQ
The questions people ask about an AI that works on their Mac.
No. Junior is Claude Code, or Codex for chats, running with your login. The name, the face and the rules are Triage’s.
It asks before it pushes a branch. You’re fine.
Some of it, today: your playbooks and your reply style. Learning from what you approve isn’t built yet. We’d rather say so than sell it.
Not today. You merge. Later, for work you’ve trusted it with, and only when you say so.
It stops and asks, with the answer it suggests. Its face says Stuck, so you’ll notice before standup.
It drafts. Nothing reaches Slack, GitHub or Linear until you approve it, word for word.
Yes. Autonomy has a “Never asks” level. It’s off until you allow it in Settings. We’d leave it off.
Your Claude or Codex plan, nothing on top. Each session shows its cost in dollars, and goals and jobs stop at the budget you set.
Junior comes with Triage. One line installs both. Free and open source, on the plan you already pay for.
curl -fsSL https://usetriage.sh/install.sh | sh