Autonomous agent orchestration · GitHub · GitLab · Linear

Issue in. Reviewed pull request out.

embry0 is an orchestration engine that resolves your issues autonomously. A triage agent plans the work, a developer agent writes the code and opens the PR, a reviewer agent gates it, and a QA agent boots your app and proves the change in a real browser. Every agent sealed inside its own sandbox. Your code never retained.

Request early accessSee the pipeline
01: The backlog

Your backlog is not a staffing problem.

Issues rot. The well-scoped fix nobody gets to, the dependency bump six sprints old, the bug three users reported that keeps losing triage to the roadmap. Every one of them is fully specified work that no human should have to schedule.

A chatbot that drafts code in a text box does not fix this: someone still has to run it, test it, review it, and ship it. What fixes it is a pipeline: one that takes the issue, does the work, checks the work, proves the work, and hands you a pull request you can trust enough to merge. That pipeline is embry0.

02: The pipeline

Conception. Gestation. Quickening. First breath.

Four agents, one continuous organism. Built on LangGraph orchestration and the Claude Agent SDK, checkpointed at every stage: pause it, question it, resume it from any channel.

01Triage agent
Conception

The issue becomes a plan.

An LLM triage agent reads the issue, scores its confidence, splits oversized work, and configures the job: model tier, validator mode, sandbox profile. Low confidence means it asks before it acts: on the dashboard, in Telegram, or as a comment on the issue itself.

02Developer agent
Gestation

The code takes shape.

A developer agent owns the branch end to end: writes the code, runs your checks, commits, and opens the pull request. It works inside an isolated Docker sandbox with nothing it does not need. Your credentials never enter the container.

03Reviewer agent
Quickening

The work is challenged.

A reviewer agent reads the diff against the issue and gates it in a loop: rejected work goes back to the developer with findings, approved work moves on. Nothing reaches you unreviewed.

04QA agent
First breath

The change is proven alive.

For changes that need it, a QA agent boots your app's full compose stack inside Docker-in-Docker and drives a real browser against your acceptance criteria. Screenshots, console, network, and container logs come back as evidence attached to the PR.

03: Vital signs

Watch it think.

The live dashboard streams every job as it runs: agent reasoning, tool calls, costs ticking per step, the pipeline graph animating node by node, QA evidence landing as it is captured. Over WebSocket, in real time, not a log you read after the fact.

  • Agent streamthinking + tool calls, live
  • Pipeline graphreal DAG, rendered as it executes
  • Cost meterper job, per step, as it spends
vital signs
live · streaming over websocket
  • job
    queued
  • agent
  • qa
  • cost
    $0.00
  • human
    watching
heartbeat
00bpm
04: The membrane

A cell wall between your code and everything else.

Sandbox isolation
Every job runs in its own container: cap-drop ALL, no-new-privileges, inside Docker-in-Docker. The agent lives and dies with the job.
Credentials never enter
Git and forge-API proxies inject tokens transparently, gated by per-sandbox enrollment. Agent code never sees a secret.
Network on demand
Agents get internet access only when a step needs it. The default state is sealed.
Command safety
43 blocked bash patterns with unicode normalization, glob restriction, and symlink defense: enforced fail-closed before any tool dispatch.
Zero code retention
Your code exists only inside the sandbox container. When the container is destroyed, the code is gone. Nothing is kept.

The security model is the product. An autonomous agent you cannot trust with your repository is a demo, not a tool.

05: Synapses

It plugs into where the work already lives.

GitHub

Webhook-triggered or dispatched by hand. Issues in, pull requests out, questions asked as issue comments when the agent needs you.

GitLab

Full forge parity: webhook triggers on issue labels, merge requests created, credential proxies and sandbox clone wired the same sealed way.

Linear

Label an issue “embry0” and a job dispatches against the mapped repo. The outcome and the agent's decision trail post back to the ticket.

Telegram

Human-in-the-loop, wherever you are. When an agent pauses to ask, answer from Telegram, the dashboard, or the forge comment, and the pipeline resumes from any channel.

06: Controls

Autonomous, not unaccountable.

Budgets
Per-job, daily, and monthly caps with soft and hard overrun modes. It cannot spend what you did not grant.
Access
Auth0 SSO, per-user and service API keys with scoped tiers, session control.
Audit
A global audit API with retention and per-principal limits. Every action attributable.
Models
Developer tier on Claude Opus, defaults on Sonnet, a provider catalog with per-model enablement, including Grok.
Repos
A central registry: per-repo QA config, environment secrets, install commands, sandbox profiles.
07: Honest questions

What engineers ask before they trust it.

What happens when the triage agent is not confident?+

It does not guess. Low-confidence issues trigger a question to a human: on the dashboard, in Telegram, or as a comment on the issue. The job checkpoints and waits. When you answer from any channel, it resumes exactly where it paused. Oversized issues get split instead of botched.

Does my code get stored on your infrastructure?+

No. The core principle is zero customer code retention. Your repository is cloned into the job's sandbox container, the work happens there, the PR is pushed to your forge, and the container is destroyed. What persists is the job's metadata, status, costs, logs, QA evidence, never the code.

Can the agent leak my tokens?+

It never holds them. Git and forge-API calls leave the sandbox through proxies that inject the token on the way out, gated per-sandbox. The agent can push to your branch without ever being able to read the credential that authorized it.

What does the QA gate actually run?+

Your app. The QA agent boots the repo's compose stack inside Docker-in-Docker, waits for it to come up, and drives headless Chromium via Playwright against the acceptance criteria from the issue. Failures route back to triage with the evidence. Passes attach screenshots, console, network, and container logs to the PR.

What is it built on?+

LangGraph for orchestration, a checkpointed state graph that makes pause/resume and human-in-the-loop reliable rather than bolted on, and the Claude Agent SDK for execution. PostgreSQL for state, MinIO for QA artifacts, WebSocket for the live stream.

Who reviews the agent's work?+

First a reviewer agent, in a rejection loop the developer must satisfy. Then, optionally, the QA gate proves the change in a browser. Then you. The pull request is still a pull request. embry0 removes the toil between issue and reviewable PR, not your judgment.

What does a runaway job cost me?+

What you allowed it to. Budget caps apply per job, per day, and per month, with soft and hard overrun modes. Costs stream live on the dashboard per step, so a job that is spending strangely is visible while it runs, not on the invoice.

the loop

Give it an issue.

Label an issue. Get a reviewed, QA-proven pull request. That is the whole loop.

issue #142 · labeled “embry0”
→ triage: plan accepted, confidence 0.91
→ developer: branch pushed, PR #143 opened
→ reviewer: approved after 2 findings resolved
→ qa: 6/6 criteria passed in browser
✓ ready for your review
Request early access