Internal Agents Map

Kolega

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.

Company
Bitrise
Approach type
Agent
Human involvement
Drafts reviewed
Interfaces
Slack, Jira, Github, Ci
Deployment stage
Deployed
Evidence strength
Detailed primary
Entry reviewed
Copy as MDAsk ChatGPT

How it works

Jira ticket assignment or Slack mention through delegated coding in a disposable dev environment to a human-instructed merge and ticket closure.

Pick up the work and post a plan

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[Source 1]

Delegate the coding to a disposable dev environment

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[Source 1]

Write and test the code, push a branch, and open a pull request

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[Source 1]

React to anchored events without a human relay

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[Source 1]

Merge on an explicit human instruction, then clean up

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[Source 1]

Where people stay involved

People review, approve, or guide the agent’s work here.

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.

  • Supervision level

    Work-product review

    A person reviews the draft or implementation.

    Level 3 of 5

    • Jira ticket assignment or Slack mention → merged pull request[Source 1]

How supervision levels work

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[Source 1]
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[Source 1]
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[Source 1]
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[Source 1]
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[Source 1]
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[Source 1]
Interfaces
  • slack
  • jira
  • github
  • ci
[Source 1]

Mechanisms

Ticket-to-merge loop in one Slack thread

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[Source 1]

An orchestrator that cannot code

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[Source 1]

Isolation as the security model

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[Source 1]

Never block on input

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[Source 1]

Validation and failure handling

Test in an environment that matches CI

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[Source 1]

Gate public writes and fail closed

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[Source 1]

Reported observations

These results come from the sources. Notes below each result explain what it covers and any reported limits.

Key observation

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[Source 1]

One design-system migration Kolega handled during a recent week

About this result
Category
Implementation scale
Evidence type
Qualitative
What it covers
One design-system migration Kolega handled, in usages, files, days, merge-conflict rounds, and review comments
Key observation

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[Source 1]

Building the Kolega orchestrator service

About this result
Category
Implementation scale
Evidence type
Qualitative
What it covers
Size, authorship, and elapsed build time of 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.[Source 1]

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.[Source 1]

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.[Source 1]

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.[Source 1]

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.[Source 1]

Back to agents
Improve this record

Give your coding agent the context and instructions to prepare a source-backed update.

Paste the prompt into your coding agent, then describe the correction or add a public source.

Preview prompt

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.

  1. 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-ownEngineering blog · First party · Last source verification: 2026-09-21
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
  1. Summary
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    Not assessed
    Confidence reason
    No explicit confidence assessment is recorded for this claim.
  2. Sandbox
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    Not assessed
    Confidence reason
    No explicit confidence assessment is recorded for this claim.
  3. Harness
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    Not assessed
    Confidence reason
    No explicit confidence assessment is recorded for this claim.
  4. Model
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    Not assessed
    Confidence reason
    No explicit confidence assessment is recorded for this claim.
  5. Interfaces
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    Not assessed
    Confidence reason
    No explicit confidence assessment is recorded for this claim.
  6. Tool access
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    Not assessed
    Confidence reason
    No explicit confidence assessment is recorded for this claim.
  7. Credentials
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    Not assessed
    Confidence reason
    No explicit confidence assessment is recorded for this claim.
  8. Context management
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    Not assessed
    Confidence reason
    No explicit confidence assessment is recorded for this claim.
  9. Ticket-to-merge loop in one Slack thread
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    Not assessed
    Confidence reason
    No explicit confidence assessment is recorded for this claim.
  10. Pick up the work and post a plan
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    Not assessed
    Confidence reason
    No explicit confidence assessment is recorded for this claim.
  11. Delegate the coding to a disposable dev environment
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    Not assessed
    Confidence reason
    No explicit confidence assessment is recorded for this claim.
  12. Write and test the code, push a branch, and open a pull request
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    Not assessed
    Confidence reason
    No explicit confidence assessment is recorded for this claim.
  13. React to anchored events without a human relay
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    Not assessed
    Confidence reason
    No explicit confidence assessment is recorded for this claim.
  14. Merge on an explicit human instruction, then clean up
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    Not assessed
    Confidence reason
    No explicit confidence assessment is recorded for this claim.
  15. An orchestrator that cannot code
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    Not assessed
    Confidence reason
    No explicit confidence assessment is recorded for this claim.
  16. Isolation as the security model
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    Not assessed
    Confidence reason
    No explicit confidence assessment is recorded for this claim.
  17. Never block on input
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    Not assessed
    Confidence reason
    No explicit confidence assessment is recorded for this claim.
  18. Test in an environment that matches CI
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    Not assessed
    Confidence reason
    No explicit confidence assessment is recorded for this claim.
  19. Gate public writes and fail closed
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    Not assessed
    Confidence reason
    No explicit confidence assessment is recorded for this claim.
  20. 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
  21. 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
  22. 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.
  23. 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.
  24. 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.
  25. 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.
  26. 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.
  27. 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