Bifrost
The bridge between worlds. Azure DevOps → GitHub Actions migration at portfolio scale — semantically reviewed, human-approved, fully documented, and air-gap capable.
Read the plan See it in action View on GitHub
The portfolio heatmap — migration risk across an Azure DevOps org, at a glance. See more of the portal →
The thesis
GitHub’s official tools (gh actions-importer, GEI/ado2gh) already do ~90% of the syntactic
conversion, one pipeline at a time. Bifrost owns the part nobody else does well:
the other 10%, the review/approval workflow, the portfolio orchestration, semantic-equivalence validation, and the audit trail.
We wrap the official tools; we never reimplement their conversion logic.
Why it’s different
| Review-first | Recommends and explains; never silently rewrites production CI. Auto-commit is opt-in, gated behind human approval + validation. |
| Air-gap capable | Run with a local model only (Ollama / llama.cpp). No pipeline definition — which leaks infra topology and secret names — ever leaves your network. |
| Deterministic risk | Risk scoring is computed from explainable factors, not the LLM. The model explains; it does not score. |
| Grounded generation | Every LLM request carries the source snippet + the Importer’s output + the specific failure. The model fills the gap from that diff — never converts from scratch. |
| Attestation-native | Every decision — who approved what, what changed, why, the validation result — is a signed, exportable attestation. |
| Platform-agnostic | The source adapter is an interface. ADO is the first implementation; Jenkins, GitLab, Bamboo, and others follow. |
How it works
PORTAL (React/TS) portfolio heatmap · 3-pane diff · approve/edit · runbook
│ REST/SSE
CONTROL PLANE (Rust/axum) job state machine · conversion orchestrator ·
│ deterministic risk model · attestation + audit log
│ LlmProvider trait → Anthropic · Gemini · Copilot/Models · Ollama (air-gap)
▼ shell-out (Docker) ▼ HTTP
INGESTION ADAPTERS EXTERNAL: ADO REST API · GitHub API · GEI
gh actions-importer (Docker) · SourceAdapter trait (ADO → …)
The core loop, per pipeline: Importer dry-run → parse the log for unsupported steps,
partial constructs, and manual tasks into typed Gaps → send each gap to the LLM with full
grounding → assemble an augmented workflow + rationale + risk → persist as a Proposal awaiting
human review. Nothing reaches production without a person approving it.
Where it is
Bifrost ships in seven milestones. The full conversion loop already runs against live Azure DevOps projects — M2 (Conversion + LLM), M3 (Review Portal), and M4 (Commit + PR) are complete, and M5 (Validation) is underway:
| Milestone | Status |
|---|---|
| M0 Foundations — workspace, CI, dev env, docs, fixtures | In progress |
| M1 Audit MVP — ADO adapter + Importer audit + heatmap | Mostly done |
| M2 Conversion + LLM — gap detection, LLM layer, risk model | Done |
| M3 Review Portal — three-pane diff, approve/edit, lifecycle | Done |
| M4 Commit + PR — push/migrate, runbooks, PR automation | Done |
| M5 Validation — sandbox trigger, run capture, parity diff | In progress |
| M6 Compliance + Deploy — attestation, auth, multi-tenant, Helm | Planned |
Today you can audit a portfolio, convert a pipeline (real Importer dry-run + grounded LLM gap-fill, air-gap capable), review and approve it in the portal, open a PR, then trigger the converted workflow in a sandbox, capture its run, and diff it against the ADO baseline.
Bifrost is in active development. MIT licensed. Built on top of GitHub’s official migration CLIs.
