Try it live
Two first-party host applications built on Affiant run in public: Meridian, an aircraft-maintenance desk, and HR Portal, a small HR department. Each has an AI agent in the sidebar. Everything either agent proposes to write arrives as an Evidence Card and waits for a human. That moment is what the demos exist to show — and because the two apps sit on different backends and different docket stores, together they show that the moment depends on neither.
Both apps say so in their header bar: they are demo apps built to show Affiant at work, not products.
Before you start
Section titled “Before you start”- Sign-in. Each demo sits behind a one-time code. Enter any email address, paste the code it sends you, and you are in for 24 hours. There is no password and no account to create.
- Five messages a day, per person, per demo. The sixth is refused until 00:00 UTC. Spend them on the prompts below.
- Shared, synthetic data. Every visitor works on the same seeded data, and it is rebuilt every night at 00:00 UTC — chat history and any cards you left pending go with it. Treat it as a shared whiteboard: don’t type anything real into it.
- It may need a moment. After a quiet spell the first visit takes a few seconds to wake.
- Seats are finite. At most fifty people can be signed in at once, across both demos together. If sign-in fails, try again later.
- Say what you think. Every reply has a thumbs-up and thumbs-down; the comments reach the maintainers.
Meridian
Section titled “Meridian”Meridian is an aircraft-maintenance application — a fleet of ten aircraft, their work orders, and a parts inventory — at meridian.affiant.dev. Ask its agent to raise a work order and the proposal comes back as a card.

What to try
Section titled “What to try”| Say | What happens | What it shows |
|---|---|---|
Show me all AOG aircraft |
The agent calls a read tool and answers from the fleet. | A read tool returning a dual-audience result. |
What work orders are overdue? |
Another read, filtered by due date. | Same contract, different tool. |
Create an AOG work order for the left engine on A7-BCA |
The agent drafts the work order and an Evidence Card appears. Nothing is written yet. | The Docket and Evidence Cards, the Review Gate, and Rule 3 — write tools never write. |
| (on the card) change a field, then Approve | The write executes with your amendment on the record. | A reviewer’s correction becomes part of the affidavit. |
Guide me through creating a work order |
The app navigates to the form and walks you through it field by field. | Rule 6: the agent guides the UI through a registry, never by inspecting the DOM. |
Is part PN-CFM56-OIL-001 available? |
A stock check. | A read tool against inventory. |
HR Portal
Section titled “HR Portal”HR Portal is a small HR department — an employee directory, leave requests, expense reports, and an approvals inbox — at hrportal.affiant.dev. Its agent works on one employee at a time: find them first, then ask for a change on their behalf.

What to try
Section titled “What to try”| Say | What happens | What it shows |
|---|---|---|
Find employee Priya Nair |
The agent searches the directory and remembers who “her” means for the rest of the conversation. | A read tool. For leave and profile changes the host goes further: a write with no search before it is sent back to search first, so the agent does not guess an identifier. |
Submit an expense report of 120 dollars for a client lunch for her |
The agent drafts the report and an Evidence Card appears. Nothing is written yet. | The same Docket and Review Gate on a different backend. |
| (on the card) change a field, then Approve | The write executes with your amendment on the record, tagged UserStated. |
The reviewer’s word outranks the model’s — Rule 7, append-only provenance. |
Request 3 days of annual leave for her starting next Monday |
Another Evidence Card: this leave request wants a reviewer’s confirmation. | Affiant.Policies deciding what a filed write needs before a reviewer ever sees it. |
Request 1 day of sick leave for her tomorrow |
No card. A standing order approves it on the spot and it appears under Leave. | A policy that pre-approves one class of write — a day of sick leave — so the routine case skips the queue. |
Update her email to [email protected] |
An Evidence Card for a one-field change. | The same gate on the smallest write. |
What you are looking at
Section titled “What you are looking at”The card is an Evidence Card: the rendering of an Affidavit, one row per field the agent proposes to write. Each row carries a badge naming where its value came from. Both apps spell the provenance ladder out in the same plain words:
| Badge | ProvenanceSource | Meaning |
|---|---|---|
| You said this | UserStated |
The user said it, in so many words. |
| Looked up | External |
Read from a system of record. |
| Calculated | Computed |
Derived deterministically from trusted inputs. |
| From your conversation | Conversation |
Drawn from earlier in the dialogue. |
| AI suggested | Inferred |
The model’s best guess. Plausible, not sworn. |
| System default | Default |
A fallback value no one supplied. |
| Not derived — please verify | Empty |
No provenance. Must be resolved before it counts. |
Approve and Reject are the Review Gate from the reviewer’s
side. While a required field is still Not derived, Approve is held — the framework flags, the host decides.
Change a field before approving and the amendment is recorded as UserStated — the reviewer’s word outranks
the model’s.
Meridian’s guided walkthrough is Rule 6 in the open: the agent knows which form fields exist because the UI registered them, not because it read the page.
What they run on
Section titled “What they run on”Both apps are .NET 10 and React, talking over SignalR, with Gemini 2.5 Flash as the model, hosted on Cloudflare. Their tools are ordinary C# classes discovered by reflection — the same shape the quickstart builds. Where they differ is the point:
| Meridian | HR Portal | |
|---|---|---|
| Backend | Microsoft Agent Framework, through Affiant.AgentFramework |
IChatClient directly, through Affiant.Extensions.AI |
| Docket store | Affiant.Docket, in memory |
Affiant.Docket persisted by Affiant.EntityFramework (SQLite) |
| Packages in play | Affiant.Core, Affiant.AgentFramework, Affiant.Docket, Affiant.Policies, Affiant.Transport.SignalR |
Affiant.Core, Affiant.Extensions.AI, Affiant.Docket, Affiant.EntityFramework, Affiant.Policies, Affiant.Transport.SignalR |
Two backends, two stores, one Evidence Card — see Interception Backends.
What the demos do not show
Section titled “What the demos do not show”- The third backend. Affiant also runs on Semantic Kernel — see Interception Backends.
- Nothing about hosted tools. Both apps’ tools are invoked locally, which is exactly the seam Affiant hooks. Tools that execute on a remote runtime are outside it, and the framework does not claim otherwise.
- Not a security claim. The demos show provenance and review; they do not show — and Affiant does not promise — that a model cannot be wrong.
- Not the source. Meridian and HR Portal are private first-party applications. Everything they run on is Apache-2.0 at github.com/Sakwala/affiant.
Where next
Section titled “Where next”- Installation — the packages,
--prerelease, and which ones you need. - Quickstart — the same card in your own host, in one sitting.
- Using Affiant with Microsoft Agent Framework — the adapter Meridian runs on.
- Using Affiant with Microsoft.Extensions.AI — the bridge HR Portal runs on.
- Found something? Open an issue.