SEIF Docs

Quickstart

Three ways in. Each one ends with something you can see working; none needs a model key.

PathTimeYou get
A. In the browser2 minThe ready example: every verdict SEIF gives, on one screen
B. In your coding agent5 minClaude Code, Codex or Cursor asking SEIF before each task
C. In your application10 minAn HTTP runtime serving a versioned Context Build to your code

A. In the browser (2 minutes)

  1. Open app.seifprotocol.com and create an account.
  2. On the welcome screen choose Open a ready example. It creates Aurora Clinic, a dental clinic with fictitious data, two agents (Customer service and Team) and five tests, and opens Context.
  3. Click each question under Try it:
QuestionVerdictWhat it shows
how much is a cleaning?ReadyThe price is in hand, with its file and the date it was checked.
how much is an implant?Out of dateThe price exists, but nobody checked it within 90 days, so the agent does not receive it.
what is the maximum discount on whitening?Sealed by ruleThe team's margins never reach the customer agent. Switch Agent to Team and ask again: now it is Ready.
do you do clear aligners?Nobody wrote thisClick Teach the answer: it becomes a dated section, the agent receives it, and a test proves it.
  1. Open Proof: the context health, 5/5 tests and the one intended warning (the stale price). Paste a real conversation under Prove it with real questions to see which questions are covered.
  2. Open Connect to an agent → Turn the server on to get an MCP address and token for this project, with copy-ready recipes for each client.

To start your own project: New project, give it a name, Create. There is one kind of project: it opens on Context, where you link a GitHub repository, upload a folder of documents, or simply ask a question and teach the answer. Everything else is turned on inside the same project when you need it: agents (Agents), the AI, data and channels (Connections), going live (Service), builds and deployments (Agents → Build & deploy) and the WhatsApp Sales Kit (Team → turn the team on, or Routines → sales funnel).

B. In the agent you already use (5 minutes)

Requirements: this repository checked out (development builds) or the desktop app's bundled seif.

bin/seif init "Aurora" --template example --project ./aurora   # or: --template exemplo (Portuguese)
bin/seif test   --project ./aurora                              # ✓ 5/5 passed
bin/seif doctor --project ./aurora                              # healthy · 1 warning (the stale price)
bin/seif compass "how much is an implant?" --project ./aurora   # STALE, and which date to renew

Register the project as an MCP server in Claude Code (Codex and Cursor take the same command line):

claude mcp add seif -- "$PWD/bin/seif" mcp --project "$PWD/aurora"

The server exposes context_compass, context_find, context_resolve, context_why, context_test, context_doctor, context_learn and context_report_gap. Its instructions — written in the project's language — tell the agent to call context_compass with the user's task first, work from what is in hand, treat out-of-date material as unconfirmed, answer naturally without exposing the mechanism, and when it cannot answer, use the profile's fallback message or report the gap with context_report_gap. bin/seif agents-md --project ./aurora writes an AGENTS.md that teaches any coding agent the repository. More in Agent-native SEIF.

A project in the web app has a hosted MCP endpoint instead (Context → Connect to an agent). It answers as the one agent profile you choose and never names material that profile may not receive.

C. In your application (10 minutes)

Build the context once, run it behind a small HTTP runtime, call it from your code.

bin/seif build --project ./aurora                     # immutable, digest-addressed Context Build

Run the Build (desktop: Deploy → Run locally, or Export runtime bundle and ./run.sh anywhere), then:

curl -s http://127.0.0.1:<port>/v1/context/resolve \
  -H "authorization: Bearer $SEIF_RUNTIME_TOKEN" -H "content-type: application/json" \
  -d '{"consumer":"atendimento","input":{"message":"how much is a cleaning?"}}'

The response carries provider-neutral messages for any model, the materials with reasons and digests, the layers with every stage, unknowns, the budget and a traceRef:

context = runtime.resolve(consumer="atendimento", input={"message": question})
if context["status"] == "BLOCKED":
    hand_over_to_a_person(context["reason"])          # e.g. REQUIRED_CONTEXT_TRIMMED
reply = model.generate(context["messages"] + [{"role": "user", "content": question}])
runtime.report_consumption(context, sent_messages)    # optional; otherwise "consumed" stays UNKNOWN

Runnable clients: curl, Python, TypeScript. Reference: Integration API · Python SDK · TypeScript SDK.

Next