Junior
An open-source Slack agent built at Sentry that retrieves context and acts across company systems. People can steer interactive tasks in a thread; Junior also handles scheduled tasks and inbound events. Its author prefers one agent for work that spans several systems.
- Company
- Sentry
- Approach type
- Agent
- Work
- Coding, Code review, Support, On-call
- Human involvement
- Varies by scope: Continuous steering, Unknown. See each scope.
- Invocation
- Event-driven, Interactive, Scheduled
- Interfaces
- Slack, Web, Github
- Deployment stage
- Deployed
- Evidence strength
- Detailed primary
- Entry reviewed
How it works
Slack thread request or watched event to an acted-upon answer or artifact.
Junior searches the repo, traces the code path, and answers in the thread instead of guessing[Source 1]
Tagged in a thread, Junior summarizes the discussion, does gap analysis or an RCA, and opens the ticket through the typed tool that attaches the deterministic footer[Source 1]
Junior opens a feature with agent-browser, clicks around, takes screenshots or videos, and writes up the rough edges in the same thread[Source 1]
After opening a PR Junior subscribes to its events; a failed check or requested change becomes a synthetic message, and Junior decides what to update in the thread[Source 1]
Where people stay involved
People review, approve, or guide the agent’s work here.
Reported: People give information, steer mid-run, and review the work. The event-driven follow-up boundary is unverified and stays in research details.
Implementation details
- Model
- Claude Sonnet (faster); swappable (Opus as a more expensive option)[Source 1]
- Harness
- Custom harness on Pi's SDK; a task broker over Vercel Queues with an inbox → worker-claim → interrupt/resume pattern to survive serverless timeouts; 'skills-as-runbooks'[Source 1]
- Sandbox
- Vercel serverless functions; Vercel agent-browser sandbox with an on-path proxy for traffic interception; ephemeral containers[Source 1]
- Tool access
- Progressive discovery via MCP; by default Junior connects to no provider until the agent requests a tool lookup; plugins connect Sentry, GitHub, Linear, Notion[Source 1]
- Knowledge
- Conversation transcripts persisted in Redis; repo search to trace code paths; skill docs (TELEMETRY.md, SOUL.md)[Source 1]
- Context management
- Incremental transcript updates in Redis; resource subscriptions to GitHub PR events for follow-ups[Source 1]
- Credentials
- On-path proxy injection; the model never sees the token because it is not in the sandbox; plugins declare OAuth flows and credential domains; GitHub distinguishes read vs. write[Source 1]
- Interfaces
Slack is the primary surface and the dashboard is the web surface; the writeup also names a local junior chat CLI, which the claim list does not carry.
- slack
- web
- github
Mechanisms
searchMcpTools connects to a requested MCP provider and discovers its tools on demand[Source 1]
An outbound proxy injects credentials for configured domains or pauses the agent for authorization[Source 1]
Pauses near a serverless deadline and queues a task to continue the session[Source 1]
Validation and failure handling
Reported: Lesson
Reported observations
These results come from the sources. Notes below each result explain what it covers and any reported limits.
Open-source (Apache-2.0) Slack agent (~100k lines of TypeScript excluding tests, evals, docs, and lockfiles) used internally at Sentry[Source 1, Source 4]
- Reported by
- Sentry
- Scope
- Junior codebase size (excluding tests, evals, documentation, and lockfiles) and license in the July 2026 author report
The source does not report the denominator of this figure.
Observed in July 2026
About this result
- Category
- Implementation scale
- Evidence type
- Reported measurement
- What it covers
- Junior codebase size, Apache-2.0 license, and internal use at Sentry
Around 171,700 lines of TypeScript under the same exclusions, counted from the public repository on 2026-10-08[Source 2]
- Method
- Line count of TypeScript files on the repository main branch excluding test, spec, fixture, eval, and docs paths
The source does not report the scope and denominator of this figure.
Observed in October 2026
About this result
- Category
- Implementation scale
- Evidence type
- Reported measurement
- What it covers
- Junior codebase TypeScript lines excluding tests, evals, docs, and lockfiles
4 months from start to writeup[Source 1]
- Reported by
- Sentry
- Scope
- Author-reported development and iteration time before the writeup
The source does not report the denominator of this figure.
About this result
- Category
- Implementation scale
- Evidence type
- Reported measurement
- What it covers
- Author-reported development time from project start to writeup
Lessons
Reported opinion: Junior's author prefers one agent that can work across company systems to choosing among several vendor-specific bots.[Source 1]
Junior's skills contain operational instructions, including telemetry lookup conventions and the GitHub workflows used for package releases.[Source 1]
Junior pauses before a serverless timeout and queues a continuation task at a resumable point.[Source 1]
Junior tests agent behavior with event scenarios, explicit evaluation criteria, and assertions on side effects.[Source 1]
Junior combines an installation token for reads with per-user OAuth for writes in its GitHub integration.[Source 1]