The local CLI for engineering AI agents that ship.
Briar reads what is really going on in GitHub, Jira, Linear, your cloud and your meetings into a local knowledge store. Then it runs LLM agents that take a ticket to a draft pull request, or answer the review comments on one you already have. All on your machine, with your own keys.
$ briar extract --company acme --include pr-archaeology› reading merged PRs and review threads in acme-co/acme-app✓ saved knowledge:acme$ briar agent implement --ticket-key ACME-42 --tracker jira› ticket-context: ACME-42 + knowledge:acmebranch chore/acme-42 · 3 files changed · tests pass✓ draft PR #482 opened · awaiting review$
Reads from the tools your engineers already use
- GitHub
- Bitbucket
- Jira
- Linear
- AWS
- GCP & Azure
- Fireflies
- Slack
What Briar gives you
One CLI for the full agent lifecycle.
Extract
23 extractors turn PR history, reviewer habits, CI health, tickets, cloud inventory and meetings into markdown. Agents read the parts that fit their job before they act. Run them once with briar extract, or on a schedule with briar runbook serve.
Act
briar agent implement takes a Jira, Linear or GitHub ticket to a draft PR. briar agent prfix answers the open review comments on a PR. briar plan run works a whole board, card by card.
Observe
briar dashboard serves a read-only status page. briar journal keeps every plan run: which card was picked, why, and how it ended. briar doctor tells you which config, credential or store is missing.
Under the hood
Where the knowledge comes from, and where the work goes.
Everything in the dashed box runs on your machine and reads from your tools. Agents push branches, open draft PRs and reply on reviews; their send_message tool only reaches the channels you list in the runbook.
Scroll sideways to see the whole diagram.
- 01Extractors read your tools, on demand or on a schedule, and write markdown knowledge to a local folder or to Postgres.
- 02You point an agent at a ticket or a PR. It fetches the ticket, the PR's review threads, and matching meeting notes and Slack messages live.
- 03In a clean git worktree it first reads the knowledge sections that fit its job (conventions, hotspots, reviewers, PR history), writes the code on a new branch and runs your tests. Coding agents run on Anthropic with your own key.
- 04It pushes and opens a draft PR. If you allow those channels in the runbook, it can also comment on the ticket or post in Slack or Telegram.
- 05You review. briar agent prfix answers the comments with one commit per thread. You merge; briar never does.
- 06A plan run writes what each card taught into the plan's knowledge, which its selector reads before the next pick. All knowledge also feeds Claude Code (CLAUDE.md) and any MCP client.
A day with briar
Less digging, more shipping.
Five moments from a normal day, and the command that does the digging for you. Each one assumes a .briar.toml from briar init.
09:00 · Start of the day
What is waiting on me, and is CI healthy?
briar extract --include active-work \--include stale-prs --include ci-health \--blob-name knowledge:acme.todaybriar context get knowledge:acme.today→Open PRs, the ones idle too long, and the flakiest workflows, on one page.
Instead of clicking through every repo's PR list and CI tab.
10:30 · After standup
We agreed on the fix in the meeting. Now build it.
briar agent implement --ticket-key ACME-42 \--tracker jira --meeting-query 'login retry'→A draft PR built from the ticket's acceptance criteria and what was said about "login retry" in recent meetings.
Instead of re-reading the ticket and the call notes before the first line of code.
14:00 · Review came back
Comments landed on yesterday's PR.
briar agent prfix --pr 482 --branch fix/login→One commit per review thread and a reply on each, pushed to the same branch.
Instead of switching back into a branch you left yesterday and fixing nits one by one.
16:00 · A production question
Which services and queues does this touch?
briar extract --include aws-infra \--blob-name knowledge:acme.cloudbriar chat→A snapshot of services, databases, queues and log groups, and a terminal chat that answers from it (needs the [mcp] extra).
Instead of opening the cloud console and clicking service by service.
18:00 · Before you log off
The sprint board still has cards nobody started.
briar plan run q3 --llm anthropic --limit 3→The next three cards, picked in order and worked one at a time, each ending in a draft PR. It runs on your machine, so leave it on.
Instead of starting each ticket from zero tomorrow.
Every feature
Every feature, by the problem it solves.
23 extractors read your repos, tracker, cloud and meetings into a markdown knowledge blob. Pick the ones that answer today's question: a run updates only their sections and keeps the rest. Agents look for their sections in every knowledge:acme* blob.
New to a repo?
Learn how this codebase and its reviewers work before you change anything.
briar extract --include codebase-conventions \--include reviewer-profile --include review-nits→Language, test runner and tooling; what each top reviewer asks for; the review asks that keep coming back.
Full referenceWhy is the code like this?
Get the reasons behind past changes without digging through history by hand.
briar extract --include pr-archaeology \--include ticket-archaeology \--ticket-archaeology-project ACME \--blob-name knowledge:acme.history→Patterns from merged PRs and from closed tickets.
Full referenceWhere will the next bug be?
Find the fragile parts of the code before you touch them.
briar extract --include defect-hotspots \--include code-hotspots --include revert-signals \--blob-name knowledge:acme.risk→Files ranked by churn, bug fixes and size; files that always change together; areas that needed reverts or hotfixes.
Full referenceIs this repo healthy?
One look at CI, tests, dependencies and static analysis.
briar extract --include ci-health \--include test-discipline \--include dependency-health --include code-scanning \--blob-name knowledge:acme.health→CI pass rate and flaky workflows, source files with no test, open dependency alerts by severity, open static-analysis findings.
Also: pr-hygiene, repo-governance, release-cadence, todo-density, commit-message-quality
Full referenceWhat is in flight?
See open work and recent decisions across repos, tracker and meetings.
briar extract --include active-work \--include stale-prs --include meeting-digest \--include active-tickets --ticket-project ACME \--blob-name knowledge:acme.today→Open PRs, PRs idle past a threshold, open tickets, and recent meeting summaries with action items (Fireflies).
Full referenceWhat runs in production?
A snapshot of your cloud and deployments, without the console.
briar extract --include aws-infra \--include github-deployments \--blob-name knowledge:acme.cloud→Services, databases, queues and log groups in AWS (GCP or Azure with --cloud), plus GitHub deployments and environments.
Full reference
Agents read the knowledge that fits their job before they act and work in a clean git worktree. They open draft PRs or push to yours; merging stays with a person.
A ticket is ready to build
Take a Jira, Linear, GitHub Issues or Bitbucket Issues ticket to a draft PR.
briar agent implement --ticket-key ACME-42 \--tracker jira→Reads the ticket and its acceptance criteria, codes on a new branch, runs your tests before it pushes, opens a draft PR.
Full referenceThe answer is in a meeting or a Slack thread
Give the agent what was said, not only what was written in the ticket.
briar agent implement --ticket-key ACME-42 \--tracker jira --meeting-query 'login retry' \--slack-query 'login retry'→Matching meeting transcript excerpts (Fireflies) and Slack messages go into the agent's context next to the ticket. Both searches default to the ticket key.
Full referenceA whole sprint to get through
Turn a Jira board or GitHub Project into an ordered plan and work it card by card.
briar plan build jira:KAN --name q3 \--llm anthropic --with-knowledgebriar plan next q3 --llm anthropicbriar plan run q3 --llm anthropic→plan next says which card comes next and why. plan run works them one by one, a draft PR each, and writes what it learned back to knowledge.
Full reference
Keep a person in charge: preview before you spend, read back what happened, merge by hand.
Comments piling up on a PR
Get a first pass on every open review thread.
briar agent prfix --pr 482 --branch fix/login→One commit per thread and a reply citing the commit SHA. A subjective comment gets a reply, not a commit. Never force-pushes or rebases.
Full referenceCheck before you spend tokens
See exactly what the agent would get before it runs.
briar agent implement --ticket-key ACME-42 \--tracker jira --dry-runbriar agent prfix --pr 482 --branch fix/login --dry-run→The prompt, knowledge and tools the agent would get. The LLM call is skipped.
Full referenceWhat did the plan run do?
Read back every decision a plan run made.
briar journal list --command planbriar journal show <session-id>briar journal export <session-id> --out q3.md→Which card the selector picked and why, and when each card started, finished, failed or stopped. Scaffold runs are recorded too.
Full reference
Put the work on a schedule and let results reach the people who need them.
Knowledge goes stale
One YAML file per company says what to extract and how often.
runbooks/acme.yaml version: 1 companies: acme: knowledge: name: "knowledge:acme" schedules: - task: knowledge every: "day at 03:17" extract: - name: pr-archaeology - name: ci-healthbriar runbook serve runbooks/→An in-process scheduler, no cron, writing knowledge:acme.knowledge every day, where agents find it. Without knowledge.name it writes knowledge:acme, which agents read too. runbook sweep does one pass over every file.
Full referenceThe agent should report back
Name the channels an agent may post to; it gets a send_message tool for them.
runbooks/acme.yaml (under companies.acme) messages: ticket_comment: { kind: jira-comment } move_ticket: kind: jira-transition config: { status: "In Review" } ops_chat: { kind: slack-channel }briar agent implement --ticket-key ACME-42 \--tracker jira --runbook runbooks/acme.yaml→The agent can comment on the ticket, move it to In Review and post in Slack. Also: GitHub or Bitbucket PR comments, Telegram.
Full referenceKnow when a scheduled run fails
Send failures where someone will see them.
export BRIAR_NOTIFY_SINKS=slack,pagerdutybriar runbook serve runbooks/→A failed runbook task sends an alert to every listed sink: Slack, email, PagerDuty or Telegram.
Full referenceOne page for all of it
Watch the scheduler without reading logs.
briar dashboard --examples runbooks/→A read-only page on 127.0.0.1:8080: schedulers, recent cycles, GitHub API quota, connectivity and host health.
Full reference
Plug the knowledge into the tools you already use, and keep credentials and storage where you want them.
Claude Code should know your team
Point Claude Code at the knowledge without copying it around.
# every extractor that can run herebriar extract --merge-claude-md→A short knowledge index in ./CLAUDE.md, so Claude Code reads the full detail on demand.
Full referenceUse briar from any MCP client
Serve briar's own features as MCP tools.
pip install 'briar-cli[mcp]'claude mcp add briar -- briar mcp serve# or over HTTP, behind a bearer tokenbriar mcp serve --transport http --token-env MCP_TOKEN→Knowledge, runbook config and extractors as MCP tools, over stdio or HTTP.
Full referenceAsk in plain words
A chat in your terminal that drives briar for you.
briar chat --llm anthropic→It reads and edits knowledge, reads and changes runbook config, and runs extractors. Gated tools ask you first. Needs the [mcp] extra.
Full referenceGive the agent more tools
List extra MCP servers per company; agents bind them at run time.
runbooks/acme.yaml (under companies.acme) mcp: sentry: transport: http url: https://mcp.sentry.dev/mcp headers: Authorization: SENTRY_MCP_BEARER purpose: "Production errors and stack traces"briar agent implement --ticket-key ACME-42 \--tracker jira --runbook runbooks/acme.yaml→The agent can call Sentry next to its own bash and file tools, plus the default think and time servers.
Full referenceOne knowledge store for the team
Share knowledge instead of keeping it on one laptop.
export BRIAR_DATABASE_URL=postgresql://...export BRIAR_STORE=postgresbriar context list→Every command reads and writes knowledge in Postgres, so the whole team sees the same blobs. The default is local files in ./knowledge.
Full referenceCredentials without the mess
Log in once per tool and see what is missing.
briar auth login jira-token --company acmebriar secrets doctor --examples runbooks/→Tokens in a local env file, AWS Secrets Manager, SSM or Vault (--cred-store). secrets doctor lists what each company and extractor is missing.
Full reference
Also in the box
- briar init · config show · doctor Write a .briar.toml, see where each setting comes from, check your setup.
- briar scaffold implementation | pr-fixes A JSON config bundle for a downstream agent orchestrator.
- briar context put | list | delete Manage knowledge blobs by hand.
- --format json | yaml | csv Machine-readable output for scripts, on every command.
- briar completion bash | zsh Tab completion for your shell.
- briar secrets bootstrap Load credentials from a store into the environment.
- briar telemetry off Turn off error and usage telemetry. Prompts, code and repo names are never sent.
See it run
What happens when you press enter.
Four pictures of the parts you will use every day, drawn from what the CLI code actually does.
Start from what you need right now and land on the exact command.
Scroll sideways to see the whole diagram.
- 01Want to know something about the code, the team or production? Read it once with briar extract, every day with runbook serve, from Claude Code or any MCP client, or ask briar chat.
- 02Want code changed? One ticket is agent implement, an open PR with review comments is agent prfix, and a whole board is plan build once, then plan run.
- 03Setting up or checking? briar init and briar doctor first, secrets doctor when a credential is missing, and journal list to read back what a plan run decided.
What the model reads, the loop it runs, and where it is allowed to act.
Scroll sideways to see the whole diagram.
- 01briar builds one system prompt: the agent's persona, the knowledge sections that persona reads (for implement: codebase conventions, code hotspots, reviewer profiles, active work, PR history and the meeting digest), the ticket or PR context, and the procedure to follow.
- 02The Anthropic model answers with tool calls. briar runs them inside a temporary git worktree and sends back the results. This repeats for at most 30 turns (--max-iter).
- 03The tools are bash and file read, write and edit. send_message and MCP tools are added only when the runbook lists channels or servers.
- 04When the model finishes, briar prints its final message (ending with the PR URL) and deletes the worktree. On an error or the turn ceiling the worktree is kept so you can look.
- 05--dry-run prints the prompt and the tool list and stops there: no clone, no model call.
What briar agent prfix does with each open comment on your PR.
Scroll sideways to see the whole diagram.
- 01prfix reads the PR with gh pr view: review decision, branch and checks.
- 02If it is approved, every required check is green and every open thread is positive, it reports 'skipped' and stops.
- 03Otherwise it lists every open review thread and PR comment and handles them one at a time.
- 04A requested code change gets the smallest fix and its own commit citing the comment. A question or opinion gets a reply, no commit. A fix that isn't safe gets a comment saying why.
- 05Then it pushes fast-forward to the PR branch and replies on each thread it addressed with the commit SHA.
- 06It never force-pushes, amends, rebases or squashes, and never commits as a bot identity.
How briar plan run picks, ships and learns, card after card.
Scroll sideways to see the whole diagram.
- 01plan build reads a Jira board or GitHub Project and turns it into an ordered card list (with --with-knowledge, using your knowledge too). It also seeds a knowledge:acme.q3 blob for the plan.
- 02plan run asks the selector (an LLM) what to do next. It reads the plan, the knowledge and the journal of earlier decisions.
- 03Pick: the card's ticket goes to agent implement, on the card's branch (chore/kan-2 when built without an LLM), from the card's parent branch. Success marks it done and writes a lesson into knowledge:acme.q3, which the selector reads before its next pick.
- 04A failed card is marked blocked. The run stops there, unless --continue-on-failure.
- 05Replan: briar re-reads the board, keeps the status of cards it already knew, and adds new ones as pending. At most 3 times per run (--max-replans).
- 06Complete ends the run. Blocked stops it until you step in. --limit N stops after N cards. Every decision lands in the journal.
How it works
Three steps from a fresh repo to autonomous engineering.
- 01
Connect your tools
briar auth login stores each token on your machine. Your LLM key comes from the environment.
›briar auth login github-pat --company acme›briar auth login jira-token --company acme›export ANTHROPIC_API_KEY=sk-ant-... - 02
Mine what your team knows
Extractors read PR history, review habits, code conventions and more into a knowledge blob. Agents read the parts they need before they act.
›briar extract --company acme \› --include pr-archaeology›briar context get knowledge:acme - 03
Point an agent at a ticket
The agent clones the repo, writes the code on a branch and opens a draft PR for your team to review.
›briar agent implement \› --ticket-key ACME-42 --tracker jira›→ draft PR opened
Usage examples
What you type, and what you get back.
The main commands, in the order you would usually run them. The examples assume a .briar.toml from briar init; without one, add --company and --repo.
Set up a repo
First time in a repo. Write a config, store a token, check everything is wired.
pip install briar-clicd acme-appbriar init --company acmebriar auth login github-pat --company acmeexport ANTHROPIC_API_KEY=sk-ant-...briar doctor→A .briar.toml at the repo root, so later commands need no --company or --repo, and a report of any missing credential.
Full referenceMine what your team knows
Before an agent touches the code. Turn PR history and review habits into notes it can read.
briar extract \--include pr-archaeology \--include reviewer-profile \--include codebase-conventionsbriar context get knowledge:acme→A markdown knowledge blob (knowledge:acme): patterns from merged PRs, what each top reviewer asks for, and the repo's language, test runner and tooling.
Full referenceFeed it to Claude Code
You already use Claude Code or another MCP client and want it to know your team's context.
# write a knowledge index into CLAUDE.mdbriar extract --merge-claude-md# or expose knowledge and extractors as MCP toolspip install 'briar-cli[mcp]'claude mcp add briar -- briar mcp serve→Claude Code reads the knowledge index from ./CLAUDE.md on demand, or calls briar's tools directly over MCP.
Full referenceShip one ticket
A Jira, Linear or GitHub ticket is ready to work. Preview the prompt first, then run it.
briar agent implement --ticket-key ACME-42 \--tracker jira --dry-runbriar agent implement --ticket-key ACME-42 \--tracker jira→The agent reads the ticket and its acceptance criteria, codes on a new branch, runs your tests before it pushes, and opens a draft PR. --dry-run spends no tokens.
Full referenceAnswer review comments
A PR has open review threads and you want a first pass done for you.
briar agent prfix --pr 482 --branch fix/login→One commit per review thread, pushed to the same branch, and a reply on each thread with the commit SHA. No force-push, no rebase.
Full referenceWork a whole board
A sprint full of cards. Let briar pick the order and work them one at a time.
briar plan build jira:KAN --name q3 \--llm anthropic --with-knowledgebriar plan run q3 --llm anthropic --limit 3briar plan status q3→An ordered plan, then one draft PR per card. What each card taught goes into the plan's knowledge, which the selector reads before the next pick.
Full referenceKeep knowledge fresh
Several repos or companies. Refresh their knowledge on a schedule and watch it from a status page.
# one YAML per company: what to extract, how oftenbriar runbook serve runbooks/briar dashboard --examples runbooks/→A long-running scheduler with no cron, and a read-only dashboard on http://127.0.0.1:8080.
Full reference
Plan runs
Work a whole board, one card at a time.
briar plan build turns a Jira or GitHub Projects board into an ordered plan. briar plan run picks the next card, implements it, opens a draft PR and writes what it learned back to knowledge. briar plan status shows where every card stands.
plan acme-q3 3 cards
1 done$ git push -u origin chore/kan-2
$ gh pr create --draft --title 'KAN-2: rate-limit login'
https://github.com/acme-co/acme-app/pull/483Briar opens drafts only. Nothing reaches main until a person merges it.
Security & control
Your machine, your keys, your call.
Credentials stay where you keep them
Tokens live in a local env file, AWS Secrets Manager, SSM or Vault. briar secrets doctor shows which company and extractor is missing what.
Plan runs on record
briar journal keeps every plan run, card by card: which card was picked and why, and how each one ended, so you can read it back later.
Drafts, not merges
Agents open draft PRs, and briar has no merge command: a person merges. When fixing a PR, the agent is told never to force-push, amend or rebase. --dry-run shows the prompt and tools before a token is spent.
Your own keys
Coding agents run on Anthropic with your own key; planning and chat can also use Bedrock, OpenAI or Gemini. Error and usage telemetry never includes prompts, code, ticket keys or repo names, and briar telemetry off turns it off.
Install it and point it at a ticket.
pip install briar-cli, log in to GitHub and your tracker, and let an agent draft its first PR. Docker works too, agents included: run iklob1/briar with GITHUB_TOKEN and an Anthropic key.