Skip to content

Norbius

Norbius

Every workspace can have an AI agent — Norbius on Colony — that works through the same collections and policies as the people who use it. You author what it knows and what it may use; the engine runs the loop.

The brief

# src/agent/+agent.md (templates/on-demand-services, excerpt)

# The on-demand services workspace

You are Norbius, the assistant of a home-services business. Customers book a **service** at their
address; each booking has one or more **visits**, and every visit is held by one **helper**.

## Whom you serve

Staff on the service desk take bookings and dispatch visits; helpers look at their own visits. Your
tools already carry each person's access.

## How the workspace behaves

- The business runs on **Singapore time**.
- A helper never holds two overlapping visits. A visit that becomes unreachable in time is moved to
  the best other helper automatically.

src/agent/+agent.md is the in-app agent’s brief for staff; without it there is no in-app agent. src/agent/+agent.external.md is the brief for external members; without it they get no agent. A brief states directives — what the collections mean and the house rules — never who may do what.

What the model sees

The system prompt is static per workspace release: the kernel prompt, the brief, an envoy’s task, and the skills with their one-line descriptions. It carries no date, actor or conversation state. Each message arrives with a sender header, and the context tool answers the time, the zone and who is acting.

Tools are your collections

The agent’s tools are the collection reads, queries and actions the acting policies grant, and the automations they may start. Each query and action sets its agent use with agent: 'direct' (the default), 'confirm' (in-app turns ask first) or 'never'. Every call is judged against the actor’s grants, and every write outcome is reported in the reply. Built-in tools lists the fixed tool set.

Skills

src/agent/skill/+<name>.skill.md is a skill: frontmatter with a description:, then ## sections. The agent sees each skill’s name and description, and reads the body when it needs it. A policy’s capabilities.skills decides who has it.

MCP servers

src/agent/mcp/+<name>.mcp.ts is mcp({ description, url, auth?, tools? }): a remote MCP server over streamable HTTP, whose URL and credentials are workspace secrets, so each tenant configures its own. tools allowlists the server’s tools. A server is reachable only through a policy’s capabilities.mcp, and an unreachable one answers Unavailable.

Triage

When the host configures AI, a fast decision model decides when a message in a conversation starts a turn: it may wait for more messages or, in a group conversation, leave them alone. A mention, a reply or send-now always starts a turn. agent: { triage: false } in +workspace.ts turns triage off for the in-app agent.

Beyond the app

The same agent answers on WhatsApp, Telegram and email through envoys.