FINOS CALM v1

Architecture governance for the agent era
Author. Seed. Gate. Record.

You author the architecture. ArchRails steers the agent onto it, gates the write and the pull request, and keeps the record. Same engine in the session and at merge — no model in the decision path.

Built on FINOS CALM v1. Evidence an auditor verifies offline, without logging into us. One product, sold as an engagement.

Built on FINOS CALM v1 Same engine. Same answer.
01 · AUTHOR
You declare it. Agents cannot rewrite it.

The architecture lives in your repo, owned by humans. The thing being gated cannot legalize its own change.

02 · SEED
The session starts on the declared path

Before it writes, the agent is given the journey and the code that already exists in that service.

03 · GATE
The write and the merge. Same engine.

A non-compliant file is never written. Bypass the session and the pull request still gets the identical verdict.

04 · RECORD
A signed record your auditor verifies offline

Findings name the control you attached. The evidence does not depend on logging into us.

Live Demo — Fully Interactive

Every PR shows exactly what it touched — and what it broke

Architecture Graph · PR #847 — feature/order-refactor
2 violations detected · drag nodes · scroll to zoom
Service
Database
Actor
System
Violation
External
⚡ 2 violations
✓ 1 passed
🏗️ CALM Architecture Review
Relationship violation
OrderService calls PaymentService directly — must route via service-api-gateway
rel-connects-order-payment
Interface breach
OrderDatabase accessed via HTTP — node declares JDBC:5432 only
db-orders · iface-orders-sql
Node boundary respected
InventoryService changes scoped to service-inventory — no leakage
CALM sources: calm.json · rel-connects-order-payment calm.json · db-orders
FINOS CALM v1

Architecture as a typed graph in the repo

Instead of architecture living in Confluence, Visio, wikis, and slides that drift from what shipped, you describe it as a schema-validated JSON file that lives next to the code.

CALM (Common Architecture Language Model) is the open standard for that file, maintained by FINOS. Nodes, relationships, and the rules that bind them — a model agents and the PR gate can actually check.

Click any node above to inspect it Validate your own architecture

The agent is guided in session. The merge gate is the same engine.

ArchRails runs in the agent's session. It steers while the agent codes, then gates the write. The pull request is the same engine.

The session starts on the declared path

Before the agent writes, it is given the journey, the owning node, and the symbols that already exist in that service. Guidance is the product. The refusal is the backstop.

Architecture is read-only to agents

Agents can't edit your CALM files to make non-compliant code legal. Architecture changes go through your normal human-reviewed PR process. The gate can't be rewritten by the thing it's gating.

Same engine at merge

If the session is bypassed — a manual edit, a raw push, a different agent — the pull request still gets this verdict. Two surfaces, one source of truth.

The deterministic layer

The same change always gets the same answer

Ask ArchRails the same question twice and you get the same verdict twice. No model sits in the decision path, so there is nothing to re-roll and no answer that drifts between Tuesday and Thursday. That is what makes a verdict something you can put in front of an auditor rather than something you have to defend.

And it is judged against an architecture that is current. The graph moves with your merges, so what gets enforced today reflects what shipped yesterday — not a diagram someone exported last quarter and forgot.

Verdict
Deterministic — no model in the decision path
Architecture
Current as of your last governed merge
Evidence
Signed — verify it offline, without trusting us
Governed agents

Your agents work under the same rules your engineers do

Most tooling reviews what an agent already wrote. By then the change exists, the branch is open, and someone is arguing about it in a comment thread. ArchRails applies your architecture at the point the agent is deciding what to do — so a change that would violate it doesn't get written, and the agent works out another way to solve the problem instead.

Crucially, the rules do not soften because the author was a machine. An agent gets the same verdict a human would get for the same change, and every refusal is recorded. When your risk function asks what your agents have been prevented from doing, that is a question with an answer — which is not the same as being able to say you allow agents but supervise them carefully.

The same holds for infrastructure. You author the control on the architecture. Anyone changing Terraform in that repo is judged against it. Application source is not proof that a store is encrypted. A control you apply to the whole architecture applies to every node in it.

When
Before the change is written, not after review
Standard applied
Identical for agents and engineers
Refusals
On the record, and answerable

Author. Seed. Gate. Record.

Architecture governance has lived at PR review forever. ArchRails keeps it there — and puts the same engine in the agent's session so a forbidden write never starts. One product. Two surfaces. Read the product.

Signed in? Academy lesson: Infrastructure controls.

Cursor attempts a forbidden DB call during a 3 AM hotfix. ArchRails blocks it in the session; the agent rewrites against the permitted path. Production stays in PCI scope.

The product →

Generic AI review bots
Trained on open-source patterns. Suggests "best practices." Comments are confident but untraceable — no source, no context, no connection to your team's actual decisions.
ArchRails
Enforces your declared CALM architecture from Git. Every comment links back to the exact node, relationship, or interface it was derived from. Violations are provable — not guesses.
Architecture catalogs (Backstage, Cortex, Port, LeanIX, Ardoq)
Catalogs describe what shipped. They surface architecture after the fact and rely on humans to keep them in sync. Useful for inventory, not for stopping a violation from merging.
ArchRails
Catalogs describe what shipped. ArchRails is the gate: the write and the merge are judged against the architecture you declared. Drift cannot accumulate because a forbidden change does not land.
Built on CALM — the open standard

ArchRails enforces architecture defined in FINOS CALM (Common Architecture Language Model) — an open standard maintained by the Fintech Open Source Foundation, not a proprietary YAML we invented.

Your architecture isn't locked in our format. The CALM JSON files describing your services, dependencies, and controls live in your repo, in your version control. If you ever leave ArchRails, your CALM files come with you and stay readable by every other CALM tool. New to CALM? Start with the FINOS tutorials.

On top of CALM, ArchRails attaches the rules you authored. The session and the pull request run the same check. The record names the control you attached.

Architecture reviews you can trust

ArchRails doesn't invent standards. It enforces what your team defines in a CALM document, and cites every node it used.

No undocumented rules enforced

If a node, relationship, or interface constraint isn't in your calm.json, ArchRails won't enforce it. Full stop.

Every comment is CALM-traceable

Feedback cites the exact CALM node ID, relationship ID, or interface that triggered it — so teams align faster and argue less.

PR-scoped bounded context

Reviews resolve only the CALM nodes touched by the PR diff. Less noise, fewer false positives, no cross-service contamination.

Audit-evidence posture

Built for change-management

Evidence bundle
Per governed merge
Every governed merge produces a cryptographically signed manifest recording the architecture as it stood at that merge, and who promoted it. Generated automatically — nobody has to remember to produce it, which is the only kind of evidence that survives an audit.
Chain of custody
Tamper-evident
Each manifest chains to the one before it, so the architecture's history is tamper-evident rather than merely recorded. Signatures verify offline — your auditor can check them without taking our word for anything, and without calling our API at all.
FINOS CALM v1
Open standard
Architecture lives in your repo as portable CALM JSON. No proprietary YAML. Maintained by FINOS (Fintech Open Source Foundation). Your architecture isn't locked in our format.
Record

Evidence an auditor checks without us

Every governed merge produces a signed attestation — what the architecture was, that the change was evaluated against it, and who promoted it. You download it and check it yourself. You never have to take our word.

Signed record
Per governed merge
Generated automatically — nobody has to remember to produce it, which is the only kind of evidence that survives an audit. It does not contain your code.
Verify offline
No account, no API call
An auditor who distrusts us entirely can still confirm it. Change one byte and it fails. How the evidence works.
Unbroken history
Chained, gap-refusing
Each record carries the one before it. A version cannot be quietly removed. Retention is measured in years, not dashboards.

What an attestation is, and is not. It proves what your architecture was at a merge, that the change was evaluated against it, and by which build. It does not contain your code. Your SCM already holds the pull request. The attestation binds to that record rather than duplicating it.

CALM Visualizer — Free

Validate and visualize your CALM architecture before it ships

Paste your calm.json to instantly check for interface violations, missing controls, and structural issues — then render your architecture graph interactively. No account required.

  • Validates against FINOS CALM v1 schema
  • Interactive architecture graph with node detail panel
  • Flags relationship and interface violations inline
  • Free to use — no login, no limits
Open CALM Visualizer
Architecture Graph
● 6 nodes · 9 relationships
👤 Customer
⚡ API Gateway
📦 Order Service
⚠ Inv. Service
💳 Payment
🗄 Order DB
🗄 Inventory DB
■ Service ■ Database ■ Actor ■ Violation

Common questions

CALM (Common Architecture Language Model) is a FINOS open standard for describing architecture as machine-readable JSON. We use it because it solves a problem that has quietly worsened for 15 years: ask five engineers to draw your system's architecture and you get five different pictures — a point Google's Adam Bender called out at SE@TP 2026. CALM ends the divergence: one declared graph that every human, every coding agent, and every CI step reads off, with deterministic verification on top.
No. Run archrails arch generate in your repo and it reads your code and writes a first-draft architecture document, plus the configuration ArchRails needs to enforce it. It uses a coding agent you already have installed — Claude Code, Codex, Gemini CLI or Cursor Agent — so ArchRails calls no model service of its own and no AI API key is involved. Budget 20–40 minutes on a large repo; it is a one-time cost. You review the draft like any other PR, merge it, and enforcement starts on the next one. If you'd rather author by hand, the free CALM Visualizer is available with no account required. Declaring the architecture once is the fundamental that lets AI amplification go in a useful direction; without it, more agents just means more entropy.
No — there is no copy of your repository anywhere in ArchRails, and nothing is indexed, mirrored or retained after the fact. Review runs against the pull request's diff, which is held only for the life of that PR and deleted when it closes or merges. Nothing outside the diff is ever read. The workflow uses your repo's existing CI token, so ArchRails never holds repo-wide credentials of its own.
Copilot and generic AI review bots score code against general best practices learned from open-source training data. They have no idea what your system is or isn't supposed to do. ArchRails enforces your declared architecture — the specific nodes, allowed connections, controls, and interface contracts in your calm.json. Every comment is traceable to a node ID you authored. It's deterministic, not probabilistic, and the same gate runs at PR time and inside the coding agent — so the agent can't reach an API your architecture forbids. As Adam Bender put it at SE@TP 2026: “all of your APIs just became public” the moment you let agents loose. ArchRails is the contract that says which ones they're allowed to call.
Agents write whatever you let them write. The default behaviour is to find any API they can call and call it. ArchRails sits in front of the agent. Before a code change lands, the session is judged against your architecture and gets a deterministic verdict. Violations come back with the rule that was broken and the path that already exists — the agent doesn't get to negotiate, and it doesn't generate a path that would never have merged.
No. You author the control on the architecture. Anyone changing Terraform in that repo is judged against it. Application source is not proof that a store is encrypted. A control you apply to the whole architecture applies to every node in it. Live cloud-account state is out of scope — the gate is this pull request. PCI and GDPR template IDs are optional paste-ins, not a requirement. Signed-in users: Academy → Infrastructure controls.
Yes. A single calm.json at the repo root describes your full system graph, and ArchRails only evaluates the slice of the graph a given PR actually touches — a payment-service change won't trigger inventory-service checks. This is deliberate: dependency graphs scale quadratically with codebase size, so at the 10× AI-driven velocity everyone is preparing for, evaluating everything on every PR is how you burn your test budget into the ground.
Because adding probabilistic review on top of a system you can't reason about doesn't get you intellectual control — it gets you a louder bottleneck. As Bender put it at SE@TP 2026, AI is an amplifier: magnitude, not direction. The deterministic CALM check is the fundamental layer: same engine, same verdict, every PR and every agent call. The LLM sits on top — translating the verdict into a readable PR comment, suggesting which sanctioned node to use instead. We use AI to explain a verdict; we never use it to be the verdict.
Read the product for Author, Seed, Gate, Record. Request a scoping call to walk through it with the founding team against your repo footprint. Or start a 14-day eval — corporate email required, full access to shipped features.

Make architecture review automatic — and provable

Start with one repo and one CALM document. ArchRails will enforce it on every pull request.

Request a demo See the product