
Kolega
- Company
- Bitrise
- Approach type
- Agent
- Work
- Coding, Code review, CI triage, Maintenance
- Human involvement
- Drafts reviewed
- Invocation
- Interactive, Event-driven
- Interfaces
- Slack, Jira, Github, Ci
- Deployment stage
- Deployed
- Evidence strength
- Detailed primary
- Entry reviewed
Purpose
Bitrise runs Kolega, an internal coding agent that lives in Slack. A Jira ticket assigned to its Jira user or an @mention in a thread starts a session; the agent reads the requirements, posts a plan, and delegates the coding to a disposable Remote Dev Environment. It opens a pull request, watches CI, and reacts to review comments, CI results, and Jira events as they arrive, then cleans up the machine and closes the ticket after the merge. The orchestrator itself cannot run or read code. Bitrise published bitclaw, an MIT-licensed reference implementation of the same architecture.
How it works
Representative workflow: Jira ticket assignment or Slack mention through delegated coding in a disposable dev environment to a human-instructed merge and ticket closure. Research details
Assigning a Jira ticket to Kolega's Jira user, or an @mention in a thread, starts a session; the agent posts a card within a second, reads the requirements, posts a plan, and then reports milestones only
The orchestrator creates a Remote Dev Environment from a pinned template with a self-contained task brief naming the repository, the ticket, the acceptance criteria, and the branch rules
The coding agent in the dev environment makes the change, runs the tests locally, pushes the branch over git, and the pull request is opened and reported back to the thread
Review comments, CI results, Jira comments, and the merge itself arrive in the owning thread as they happen; the agent fixes what a reviewer asked for, answers questions on the ticket, and reacts to events rather than polling
Merging happens only on an explicit human instruction; after the merge the agent tears down the dev machine, transitions the ticket, and signs off in the thread
Where people stay involved
Each scope pairs its normal attention boundary with supporting evidence. See the supervision definitions for the level mapping and limits.
Reported: Humans review the pull request and then give an explicit merge instruction; the agent may not merge on an approval alone, and every write the outside world can see waits behind an Approve / Reject button.
Jira ticket assignment or Slack mention → merged pull request
Work-product review · Level 3
Catalog interpretation: Level 3 for Jira ticket assignment or Slack mention → merged pull request; human attention boundary: work-product-review.
Observed in July 2026
Implementation details
- Model
- Claude. The orchestrator holds one persistent Claude conversation per Slack thread, and the dev-environment template installs Claude Code for the coding agent; no model version is named
- Harness
- A single small Python service orchestrating from Slack. One Slack thread is one session; the orchestrator creates and drives Remote Dev Environment sessions through the RDE MCP server, typing instructions into the coding agent's tmux pane and reading the pane back
- Sandbox
- A disposable Remote Dev Environment per task, created from a single pinned template whose warmup script installs Claude Code, sets up a git-only SSH identity, and starts the agent in a tmux session; every task gets its own machine, and the machine is deleted when the work is done
- Tool access
- Narrowly scoped orchestrator tools: post to Slack, read and manage pull requests, read Jira, query Datadog for logs, metrics, and error tracking, and create and drive Remote Dev Environments. The orchestrator has no shell and no file access and cannot read source code through the GitHub API; those tools are denied in code rather than in the prompt. The coding agent inside the dev environment holds a push-scoped SSH key and no GitHub API access, so git is its only interface to the outside world
- Knowledge
- Not reportedThe agent pulls what it needs at run time through scoped tools and the working tree in the dev environment; no retrieval corpus, index, or company knowledge store is described.
- Context management
- One Slack thread is one session backed by one persistent Claude conversation, so context survives messages, webhooks, and days-later follow-ups. Pull requests and tickets are anchored to the thread that owns them, so review comments, CI results, and Jira transitions arrive in the right conversation. The thread receives milestones only, not the agent's running commentary
- Credentials
- Credentials reach the coding machine through encrypted saved inputs and session inputs and are never baked into an image. The coding agent receives a push-scoped SSH key and no GitHub API access, and the orchestrator's own credentials never touch the machine
- Interfaces
- slack, jira, github, ci
Mechanisms
Jira assignment or Slack mention → plan → delegated coding in a disposable dev environment → pull request → reactions to review and CI events → human-instructed merge, cleanup, and ticket closure
The orchestrator has no shell and no file access and cannot even read source code through the GitHub API; the tools are denied in code, not in the prompt, so it plans, relays, narrates, and asks
The coding agent's push-scoped SSH key and lack of GitHub API access mean that a prompt injection hidden in a codebase reaches no further than a pushed branch that still has to survive human review
The task brief instructs the coding agent to pick the most defensible default, document the assumption in the commit message and pull request description, and continue, because the pull request review is where wrong assumptions get corrected
Validation and failure handling
Dev-environment sessions run on the same infrastructure and stacks as Bitrise CI, so passing tests in the session and in CI stop being different claims; when CI fails the orchestrator relays the failing check into the session and the coding agent reproduces it
Untrusted authors' text is redacted before the model sees it, every public write waits behind an Approve / Reject button in Slack, and the agent holds when it cannot confirm that an author is trusted, a repository is private, or a check succeeded
Reported observations
The catalog records what the sources report, with the scope and the denominator of every figure. A qualification below limits the figure it sits under.
Implementation scale · Qualitative · One design-system migration Kolega handled, in usages, files, days, merge-conflict rounds, and review comments
Bitrise describes a design-system migration touching around 200 usages across 167 files that Kolega planned, delegated, and then shepherded for four days through three rounds of merge conflicts and nine automated review comments, with the humans involved only reviewing
One design-system migration Kolega handled during a recent week
Implementation scale · Qualitative · Size, authorship, and elapsed build time of the Kolega orchestrator service
Bitrise describes the orchestrator as a single small Python service that was mostly written by a coding agent and went from first commit to handling real tickets in a few weeks
Building the Kolega orchestrator service
Lessons
Bitrise puts its guardrails in code rather than in the system prompt: which tools exist, whose text the agent may read, and what needs approval are hard checks rather than prompt instructions.
Bitrise keeps humans on two decisions, merging and anything the outside world can see, and lets planning, coding, testing, and replying to reviewers run without a human in the middle.
Each Bitrise guardrail followed an incident: the agent once merged its own pull request the moment it saw an approval, so merging now happens only on an explicit human instruction.
Bitrise handles a stop command outside the normal message queue so that it interrupts a running turn, and holds when the agent cannot confirm that an author is trusted, a repository is private, or a check succeeded.
Reported opinion: The Bitrise team prefers to delegate the thinking rather than only the typing: its orchestrator does not read source code even to plan, on the view that the coding agent in front of the full working tree should plan its own work.
Sources and research details
Citations link to the original publisher. Each source also keeps a preserved copy in the repository, so a changed or removed page stays checkable.
- How we built a coding agent that lives in Slack, and the recipe to build your ownhttps://bitrise.io/blog/post/how-we-built-a-coding-agent-that-lives-in-slack-and-the-recipe-to-build-your-own
Question coverage and scope
- purpose
- Reported
- workflow
- Reported
- human involvement
- Reported: Humans review the pull request and then give an explicit merge instruction; the agent may not merge on an approval alone, and every write the outside world can see waits behind an Approve / Reject button.
- implementation
- Reported
- validation
- Reported
- observations
- Reported: Bitrise reports no performance metric for Kolega: no throughput, acceptance rate, cost, or time saved. Both recorded observations describe the scale of the work and of the build, not a measured result.
- lessons
- Reported
Research details for every claim on this page
- Summary
- Statement type
- Fact
- Provenance
- Reported
- Confidence
- High
- Confidence reason
- A linked first-party source states the claim.
- SupportsHow we built a coding agent that lives in Slack, and the recipe to build your ownPreserved content.md, lines 14, 16, 28, 44, 68
- Sandbox
- Statement type
- Fact
- Provenance
- Reported
- Confidence
- High
- Confidence reason
- A linked first-party source states the claim.
- SupportsHow we built a coding agent that lives in Slack, and the recipe to build your ownPreserved content.md, lines 77, 79, 81
- Harness
- Statement type
- Fact
- Provenance
- Reported
- Confidence
- High
- Confidence reason
- A linked first-party source states the claim.
- SupportsHow we built a coding agent that lives in Slack, and the recipe to build your ownPreserved content.md, lines 59, 65, 82
- Model
- Statement type
- Fact
- Provenance
- Reported
- Confidence
- High
- Confidence reason
- A linked first-party source states the claim.
- SupportsHow we built a coding agent that lives in Slack, and the recipe to build your ownPreserved content.md, lines 65, 77, 105
- Interfaces
- Statement type
- Fact
- Provenance
- Reported
- Confidence
- High
- Confidence reason
- A linked first-party source states the claim.
- SupportsHow we built a coding agent that lives in Slack, and the recipe to build your ownPreserved content.md, lines 14, 28, 66, 67
- Tool access
- Statement type
- Fact
- Provenance
- Reported
- Confidence
- High
- Confidence reason
- A linked first-party source states the claim.
- SupportsHow we built a coding agent that lives in Slack, and the recipe to build your ownPreserved content.md, lines 66, 68, 79
- Credentials
- Statement type
- Fact
- Provenance
- Reported
- Confidence
- High
- Confidence reason
- A linked first-party source states the claim.
- SupportsHow we built a coding agent that lives in Slack, and the recipe to build your ownPreserved content.md, lines 77, 79
- Context management
- Statement type
- Fact
- Provenance
- Reported
- Confidence
- High
- Confidence reason
- A linked first-party source states the claim.
- SupportsHow we built a coding agent that lives in Slack, and the recipe to build your ownPreserved content.md, lines 35, 65, 67
- Ticket-to-merge loop in one Slack thread
- Statement type
- Fact
- Provenance
- Reported
- Confidence
- High
- Confidence reason
- A linked first-party source states the claim.
- SupportsHow we built a coding agent that lives in Slack, and the recipe to build your ownPreserved content.md, lines 14, 37-42
- Pick up the work and post a plan
- Statement type
- Fact
- Provenance
- Reported
- Confidence
- High
- Confidence reason
- A linked first-party source states the claim.
- SupportsHow we built a coding agent that lives in Slack, and the recipe to build your ownPreserved content.md, lines 28, 32-33, 35
- Delegate the coding to a disposable dev environment
- Statement type
- Fact
- Provenance
- Reported
- Confidence
- High
- Confidence reason
- A linked first-party source states the claim.
- SupportsHow we built a coding agent that lives in Slack, and the recipe to build your ownPreserved content.md, lines 77, 78
- Write and test the code, push a branch, and open a pull request
- Statement type
- Fact
- Provenance
- Reported
- Confidence
- High
- Confidence reason
- A linked first-party source states the claim.
- SupportsHow we built a coding agent that lives in Slack, and the recipe to build your ownPreserved content.md, lines 14, 38-39, 79
- React to anchored events without a human relay
- Statement type
- Fact
- Provenance
- Reported
- Confidence
- High
- Confidence reason
- A linked first-party source states the claim.
- SupportsHow we built a coding agent that lives in Slack, and the recipe to build your ownPreserved content.md, lines 44, 67
- Merge on an explicit human instruction, then clean up
- Statement type
- Fact
- Provenance
- Reported
- Confidence
- High
- Confidence reason
- A linked first-party source states the claim.
- SupportsHow we built a coding agent that lives in Slack, and the recipe to build your ownPreserved content.md, lines 42, 44, 89
- An orchestrator that cannot code
- Statement type
- Fact
- Provenance
- Reported
- Confidence
- High
- Confidence reason
- A linked first-party source states the claim.
- SupportsHow we built a coding agent that lives in Slack, and the recipe to build your ownPreserved content.md, lines 63, 68
- Isolation as the security model
- Statement type
- Fact
- Provenance
- Reported
- Confidence
- High
- Confidence reason
- A linked first-party source states the claim.
- SupportsHow we built a coding agent that lives in Slack, and the recipe to build your ownPreserved content.md, line 79
- Never block on input
- Statement type
- Fact
- Provenance
- Reported
- Confidence
- High
- Confidence reason
- A linked first-party source states the claim.
- SupportsHow we built a coding agent that lives in Slack, and the recipe to build your ownPreserved content.md, line 78
- Test in an environment that matches CI
- Statement type
- Fact
- Provenance
- Reported
- Confidence
- High
- Confidence reason
- A linked first-party source states the claim.
- SupportsHow we built a coding agent that lives in Slack, and the recipe to build your ownPreserved content.md, line 80
- Gate public writes and fail closed
- Statement type
- Fact
- Provenance
- Reported
- Confidence
- High
- Confidence reason
- A linked first-party source states the claim.
- SupportsHow we built a coding agent that lives in Slack, and the recipe to build your ownPreserved content.md, lines 89, 92
- Key observation
- Statement type
- Fact
- Provenance
- Reported
- Confidence
- Medium
- Confidence reason
- Bitrise reports the file and usage counts for one migration in its own engineering blog without a measurement method; it describes the scale of one task, not a measured result.
- Scope
- One design-system migration Kolega handled during a recent week
- SupportsHow we built a coding agent that lives in Slack, and the recipe to build your ownPreserved content.md, line 48
- Key observation
- Statement type
- Fact
- Provenance
- Reported
- Confidence
- Medium
- Confidence reason
- Bitrise states the service size, its authorship, and an approximate build time in its own engineering blog; no line count, commit history, or dated milestone supports the few-weeks figure.
- Scope
- Building the Kolega orchestrator service
- SupportsHow we built a coding agent that lives in Slack, and the recipe to build your ownPreserved content.md, line 59
- Lesson
- Statement type
- Fact
- Provenance
- Reported
- Confidence
- High
- Confidence reason
- The post states the rule and names the enforced case: the orchestrator's shell, file, and GitHub source-read tools are denied in code rather than in the prompt.
- SupportsHow we built a coding agent that lives in Slack, and the recipe to build your ownPreserved content.md, lines 68, 88
- Lesson
- Statement type
- Fact
- Provenance
- Reported
- Confidence
- High
- Confidence reason
- The two retained decisions are stated explicitly, and the merge gate and the Approve / Reject button on public writes are described as the mechanisms that hold them.
- SupportsHow we built a coding agent that lives in Slack, and the recipe to build your ownPreserved content.md, line 90
- Lesson
- Statement type
- Fact
- Provenance
- Reported
- Confidence
- High
- Confidence reason
- The post names the specific incident and the specific rule change it produced; it does not say how often the incident occurred or what other guardrails each incident produced.
- SupportsHow we built a coding agent that lives in Slack, and the recipe to build your ownPreserved content.md, line 89
- Lesson
- Statement type
- Fact
- Provenance
- Reported
- Confidence
- Medium
- Confidence reason
- Both behaviors are described as implemented rules with their triggers named; the post gives no example of either firing, so the effect on real runs is not documented.
- SupportsHow we built a coding agent that lives in Slack, and the recipe to build your ownPreserved content.md, lines 91, 92
- Lesson
- Statement type
- Opinion
- Provenance
- Reported
- Confidence
- Medium
- Confidence reason
- This is the team's stated design preference for its own orchestrator, supported by the reported fact that the orchestrator does not read source code; the post offers no comparison against an orchestrator that plans from source, so the preference is not shown to generalize.
- SupportsHow we built a coding agent that lives in Slack, and the recipe to build your ownPreserved content.md, line 93
- Operating model assessment
- Statement type
- Inference
- Provenance
- Catalog judgment
- Confidence
- High
- Confidence reason
- The post states that on a four-day migration the humans involved did exactly one thing, review, and that merging now happens only on an explicit human instruction after the agent once merged on seeing an approval. Review is of the pull request itself, which places the boundary at the work product rather than at the outcome.
- Observation date
- 2026-07
- SupportsHow we built a coding agent that lives in Slack, and the recipe to build your ownPreserved content.md, lines 48, 51, 89, 107