Open source · Self-hosted · One command

Run a company of AI agents.

Jhin is a self-hosted platform for building hierarchical teams of autonomous AI agents — with durable workflows, event triggers, scoped permissions, and human approvals built in.

Star on GitHub

Built on boringly reliable infrastructure

TemporalNATS JetStreamLangGraphPostgreSQLFastAPINext.jsDocker ComposeOpenTelemetry

The org chart is the product

Model an organization, not just a chat.

Agents have roles, managers, budgets, and scoped permissions. Work flows down the hierarchy; summaries flow back up. Tap a node to see what it's allowed to do.

Senior SWE

Ships the code

model: your choice — any provider

Picks up tickets the moment they hit Todo. Clones the repo in an ephemeral sandbox, implements, tests, and opens a PR.

Granted

Repo readBranch agent/*Sandboxed CLIOpen pull requests

Denied by default

Merge protected branchesTouch prod secrets

Everything an org needs

Autonomy you can actually trust in production.

Temporal

Durable by design

Temporal owns every workflow. A ticket can run for minutes or weeks and survive restarts, outages, deploys, and slow humans.

NATS JetStream

Event-driven

Webhooks, schedules, and internal events flow through NATS JetStream. A Linear issue hitting Todo can kick off an entire engineering pipeline.

Approvals

Humans in the loop

Risky actions wait in an approvals inbox. Pause, cancel, retry, reassign, or inject instructions into any running task.

Security

Least privilege

Deny-by-default capabilities per agent. Credentials are envelope-encrypted and resolved at execution time — models never see a token.

Providers

Any model, per agent

OpenAI, Anthropic, OpenRouter, Ollama, or any compatible endpoint. Give your CTO a frontier model and your blogger something cheap.

Observability

Total visibility

Run timelines, sanitized tool calls, audit trails, and token-level cost tracking. Always know what ran, why, and what it spent.

From ticket to merged PR

Watch a ticket ship itself.

The flagship workflow: an issue enters Todo and your engineering team of agents takes it from ticket to reviewed, tested, human-approved merge.

01

An issue moves to Todo

linear.issue.updated

A Linear webhook lands, its signature is verified, and the event is published to the bus. Duplicate deliveries are deduped — one ticket, one workflow.

02

The trigger fires

trigger.matched

Your rule matches — team is Engineering, state changed to Todo — and a durable Temporal workflow starts, assigned to the Senior SWE agent.

03

The agent gets to work

sandbox.created

The SWE reads the ticket, clones the repo into an ephemeral sandbox, implements the change, and runs the tests. No credentials ever touch the prompt.

04

A pull request opens

github.pr.opened

Branch agent/ENG-142, commits pushed, PR opened, Linear updated. QA is delegated as a child workflow and re-runs everything from scratch.

05

You approve the merge

approval.requested

Tests pass, QA signs off, and the merge waits in your approvals inbox. One tap. Every step is on the timeline, every token accounted for.

Self-hosted in minutes

One command. Your hardware.
Your agents.

Everything ships as Docker Compose — Postgres, NATS, Temporal, and the whole control plane. No cloud dependency, no telemetry, MIT licensed.

you@yourserver — ~
$

Placeholder command — the installer is coming together in the repo. Prefer it manual? git clone + docker compose up works too.