SEIF Docs

One agent system

Every surface of the Workstation (the Agent Workspace, the Team, Go live, on the desktop and on the web) works on the same agents, with the same models, the same capabilities, one queue of what needs a person and one way of publishing. Each concern has one engine module; the surfaces read and write it, never a copy.

ConcernOne placeUsed by
Modelsruntime/engine/models.mjsAgent Workspace, Team, Go live, connection checks
The agentits files: agents/<id>/AGENT.md, objectives/*.md, context.yamlAgent Workspace, Team, Go live, Lab, World
Capabilitiesruntime/engine/agent-capabilities.mjs (built-in) and Tool contracts (tools/*.tool.yaml)Agent Workspace, Team, Go live
What needs a personruntime/engine/approvals.mjs, decided through runtime/engine/needs-you.mjsTeam (Needs you), Agent Workspace (Needs you)
Publishingagent releases (runtime/engine/releases.mjs); Go live serves the draft or a releaseAgent Workspace, Go live

tests/engine/surface-coherence.test.mjs fails when a model provider, a built-in capability or a kind of approval is added in the engine and a screen does not offer it. tests/engine/unified-agents.test.mjs, tests/Workstation.Tests/UnifiedAgentsUiTests.cs and the last test of web/team.test.mjs prove each concern end to end.

Models

models.mjs holds the catalog of providers, normalizes a choice, resolves its credential and builds one provider with the chat() port of @and2carvalho/seif-llm-core.

ProviderCredentialWhere
Claude (Anthropic API), with Claude's own web search and fetchthe key in this computer's vault (vault:model.anthropic), an environment variable, or the account key on the webeverywhere
OpenAI-compatible (OpenAI, OpenRouter, Groq, LM Studio…)vault, environment variable or project secreteverywhere
Ollamanoneeverywhere (public HTTPS on the web)
Installed CLI (Claude Code, Kiro CLI, Codex)the client's own saved logindesktop only
Rehearsalnone: labelled answers without a modeleverywhere

The live agent and team loop (llm.mjs) and the Agent Workspace loop call the same provider objects. A project file (launch.yaml, team.yaml) names only a provider and a model; only this computer's configuration may name a credential variable or an executable.

In a project made of files, the Agent Workspace's development model is the project's brain (Data & go live): choosing it in either place changes both. Other environments keep their own connections in agent-bindings.json.

The agent

An agent is its files. The Agent Workspace opens projects made of files directly (desktop: from the World, from a team member, or from Home; web: the Agents tab), as well as legacy JSON projects.

Agent Workspace fieldWhere it lives
Name, purposethe consumer in AGENT.md
Instructionsthe objective's file, e.g. agents/guru/objectives/work.md (rendered into the context once)
Model connection key, response contract, limits, scenariosthe workspace: block of AGENT.md
Built-in capabilitiesworkspace.<id>.capabilities in AGENT.md
Knowledge, Tool contracts it may useits Context Profile in context.yaml

Edits made in the Agent Workspace go to those files (runtime/engine/file-writer.mjs): new written knowledge becomes a note under knowledge/, a new capability tools/<id>.tool.yaml, a context check tests/<id>.ctx.md, a new agent agents/<id>/. Every change is validated by loading the project; if it would not load, every file returns to what it was. Removing records is done in the Lab.

A team member is an ordinary agent: Setup → Agent Workspace… opens it; it can be tried, tested and released there, and the Team runs the same definition. team.yaml keeps only what is about the team: who leads, titles, flows, routines, budget, watched projects. Context engineering of a project made of files is the Lab.

Capabilities

A capability is something an agent may do besides answering. One list per agent, two kinds:

Built-inWhat it doesTeamGo liveAgent Workspace
Shared documentsreads and writes team/✓✓
The webClaude's own search and fetch; other brains read public pages already seen in the work✓✓
Connected datathe project's read-only lookups✓✓✓
Usage of live agentswhat people ask the live agents✓✓
Prepare messages to senda person approves the exact text✓✓

An agent that never chose has connected data, as a live agent always had; a team member written before this keeps its team.yaml abilities until the team is saved. Grant or revoke them in the Agent Workspace (Capabilities → Built in) or in the Team's Setup → May: both write the agent's file.

Tool contracts granted by the agent's profile and connected in the development environment are offered on every surface: a team member, the live agent and an Agent Workspace conversation can all call them. They run through one executor path (confirmExecutor and dispatchToExecutor in tool-runtime.mjs, shared with the context runtime's gateway): the exact contract is confirmed, arguments are validated, call limits apply, and a write waits for a person.

What needs a person

One queue per project, whichever surface asked:

KindAsked byApplied by
Message to senda team member, or an agent in the Agent Workspacedelivered as the team's always are: WhatsApp from the connected number, email in your email app, or copied
Question, report, stuck worka team memberthe team's board
Action (a write of a Tool contract)a team member or the live agentdispatched once, with exactly the arguments shown, only if the contract has not changed since
Action asked in an Agent Workspace conversationa draft preview or a published turnthe agent service's gateway, which recorded the exact call

The Team's Needs you and the Agent Workspace's Needs you show the same list (desktop and web). Calls asked in an Agent Workspace conversation are decided in the Agent Workspace, where their gateway runs; the Team shows them with a link there.

Publishing

An agent is published by creating a tested release in the Agent Workspace. A release pins its instructions, knowledge and built-in capabilities. Go live serves one agent of a project made of files on the chat link, WhatsApp, the site widget and the API:

  • the working draft: the agent's files as they are now;
  • a release: exactly what was tested (release: guru-v2 in launch.yaml).

Choose it in Go live (Version) or in the Agent Workspace (Releases → Serve on Go live, Integrate → Go live). Every answer records which version answered. Agent releases of JSON projects keep their own environment routes and application API.

Boundaries

  • Built-in capabilities and Go live belong to projects made of files; JSON projects keep Tool contracts and releases.
  • Installed CLIs run only in the desktop app.
  • A JSON project converted on the web still works, but conversion is no longer needed to use the Agent Workspace.