Skip to content

CLI reference

briar extract

Mine live state from GitHub / Bitbucket / AWS / Jira / Linear / Sentry / meeting transcripts into a markdown knowledge blob written to local disk (or Postgres). The blob is named knowledge:<company> by default and becomes the source of truth other commands splice into agent prompts.

Synopsis

$ briar extract --company COMPANY [--include EXTRACTOR ...] [--storage {file,postgres}]
[--blob-name NAME] [--root PATH] [--out-json PATH]
[<provider flags>] [<per-extractor flags>]

Available extractors

Ten scheduled extractors ship today. Each one is independent — if its required credentials are missing, it skips silently and the rest of the pipeline runs unchanged.

  • active-tickets — open tracker tickets per project (Jira / GitHub Issues / Bitbucket Issues / Linear).
  • active-work — open PRs + recent activity from the configured repo provider.
  • aws-infra — AWS / GCP / Azure inventory: compute, databases, queues, log groups.
  • code-hotspots — files churned most often in the last N days; high-risk surface area.
  • codebase-conventions — language / framework / test-runner / migration-tool detection.
  • github-deployments — recent deployment events from GitHub's deployments API.
  • meeting-digest — Fireflies transcript summaries with attendee filters.
  • pr-archaeology — merged PRs with titles, descriptions, review patterns.
  • reviewer-profile — who reviews what, how fast, what they typically catch.
  • ticket-archaeology — closed tickets with resolutions, useful for context on recurring bugs.

Cherry-pick with --include

Without --include, every extractor with valid credentials runs. Pass --include <name> (repeatable) to run only specific extractors.

Examples

Full extract for a company

$ briar extract --company acme

Writes knowledge:acme to ./knowledge/knowledge/acme.md. Runs every extractor whose credentials are configured.

Specific extractors with filters

$ briar extract --company acme \
--include pr-archaeology \
--include reviewer-profile \
--pr-repo acme/widgets \
--pr-repo acme/api \
--pr-max 50 \
--pr-authors-block dependabot \
--pr-authors-block renovate

Write to Postgres

$ briar extract --company acme --storage postgres

Requires BRIAR_DATABASE_URL (or the per-company override). The blob name is unchanged — only the backend differs.

Custom blob name (archive snapshot)

$ briar extract --company acme \
--blob-name knowledge:acme.archive-2026q1

Non-AWS cloud

$ briar extract --company acme \
--include aws-infra \
--cloud gcp \
--aws-extract-profile my-gcp-project \
--aws-extract-region us-central1

The flag names read AWS-flavoured because the AWS provider shipped first. For GCP --aws-extract-profile carries the project ID; for Azure it carries the subscription ID.

Core flags

--company COMPANYrequired
Company name. Drives the markdown title, the default blob name, and the per-company env-var interpolation (GITHUB_{COMPANY}_TOKEN, etc.).
--include EXTRACTOR
active-ticketsactive-workaws-infracode-hotspotscodebase-conventionsgithub-deploymentsmeeting-digestpr-archaeologyreviewer-profileticket-archaeology
Which extractor to run. Repeatable. Omit to run every extractor whose credentials are present.
--storage {file,postgres}default: file
filepostgres
Where to write the result. Postgres requires BRIAR_DATABASE_URL.
--blob-name NAMEdefault: knowledge:<company>
Storage blob name. Useful for snapshots — knowledge:acme.archive-2026q1 won't clobber knowledge:acme.
--root PATHdefault: ./knowledge
Local file root. Only used when --storage=file.
--out-json PATH
Parallel JSON output path. The markdown still lands in the configured store; JSON is a sidecar useful for piping into downstream tooling.

Provider flags

Pick which provider implementation the extractors talk to.

--provider {github,bitbucket}default: github
githubbitbucket
Repository provider used by active-work, pr-archaeology, reviewer-profile, code-hotspots, and codebase-conventions.
--cloud {aws,gcp,azure}default: aws
awsgcpazure
Cloud provider used by aws-infra.
--tracker {jira,github-issues,bitbucket-issues,linear}default: jira
jiragithub-issuesbitbucket-issueslinear
Tracker provider used by active-tickets and ticket-archaeology.
--meeting {fireflies}default: fireflies
fireflies
Meeting provider used by meeting-digest.

PR-archaeology / active-work flags

--pr-repo owner/repo
Repository slug to mine. Repeatable.
--pr-max Ndefault: 100
Max merged PRs per repo.
--pr-authors-allow LOGIN
Only include PRs whose author is in this list. Repeatable.
--pr-authors-block LOGIN
Exclude PRs by author. Repeatable. Useful for bot exclusion (dependabot, renovate).
--pr-assignees-allow LOGIN
Only include PRs assigned to logins in this list. Repeatable.
--pr-assignees-block LOGIN
Exclude PRs by assignee. Repeatable.

AWS / cloud flags

--aws-extract-profile PROFILE
Local AWS profile name (falls back to the default boto3 credential chain). For GCP/Azure this carries the project ID / subscription ID.
--aws-extract-region REGIONdefault: us-east-1
AWS region to inspect. For GCP/Azure this is the matching region / location.
--aws-extract-service {ecs,lambda,logs,rds,sqs,tagging-inventory}
ecslambdalogsrdssqstagging-inventory
Which AWS services to include in the inventory. Repeatable. Default: all of them. The first five describe one service each; tagging-inventory walks the Resource Groups Tagging API to enumerate every tagged resource across all services.

Account-wide inventory, without prompt bloat

tagging-inventory keeps the knowledge blob small — only per-service counts go in the markdown body, while the full per-resource detail (ARN, type, region, tags) rides in the section's structured data. Persist it with the JSON sidecar (--out-json), or set knowledge.config.inventory: "true" in a runbook to write a byte-stable inventory:<company> companion blob that only changes when the estate drifts. Tagged resources only — untagged need AWS Config / Resource Explorer.

active-work flags

--active-repo owner/repo
Repository slug to scan for active work. Repeatable.
--active-authors-allow LOGIN
Only include items by author. Repeatable.
--active-authors-block LOGIN
Exclude items by author. Repeatable.
--active-assignees-allow LOGIN
Only include items by assignee. Repeatable.
--active-assignees-block LOGIN
Exclude items by assignee. Repeatable.

github-deployments + codebase-conventions

--deploy-repo owner/repo
Repository slug to scan for deployments. Repeatable.
--conventions-repo owner/repo
Repository slug to detect conventions for. Repeatable.

Ticket flags

--ticket-project PROJECT_KEY
Tracker project key to scan for active tickets. Repeatable.
--ticket-archaeology-project PROJECT_KEY
Tracker project key to mine for closed tickets. Repeatable.
--ticket-max Ndefault: 100
Max closed tickets per project.

reviewer-profile flags

--reviewer-repo owner/repo
Repository slug to profile reviewers for. Repeatable.
--reviewer-pr-sample Ndefault: 20
How many recent merged PRs to sample per repo.
--reviewer-top-n Ndefault: 5
How many top reviewers to profile per repo.

code-hotspots flags

--hotspots-repo owner/repo
Repository slug to analyse. Repeatable.
--hotspots-since-days Ndefault: 30
Commit lookback window in days.
--hotspots-max-commits Ndefault: 100
Max commits to inspect per repo.
--hotspots-top-n Ndefault: 10
How many hotspot files to surface per repo.

meeting-digest flags

--meeting-since-days Ndefault: 7
How many days back to scan.
--meeting-max Ndefault: 25
Cap on meetings included in the digest.
--meeting-attendee-allow EMAIL
Only include meetings with at least one of these attendee emails. Repeatable. Empty = no filter (every accessible meeting).

See also

  • briar runbook — declarative form of briar extract via a YAML schedule.
  • briar secrets doctor — audit which extractors have valid credentials for a given company.
  • Plugin registries — full list of providers, trackers, clouds, and AWS service gatherers.