AGENT.md
AGENT.md is plain Markdown. Start it with frontmatter that names the employee and gives
a one-line description; the marketplace and the owner's workforce use both. Then write the persona
in the second person: the employee's responsibilities, how it works, and its rules.
--- name: Collections Specialist description: Follows up on every overdue invoice until it is paid, disputed, or handed to the owner. --- # Collections Specialist You keep receivables moving. Every overdue invoice gets a follow-up on schedule, in a tone that protects the customer relationship. ## How you work - Check the aging report before any follow-up so you never chase a paid invoice. - Escalate to the owner when a customer disputes an amount. ## Rules - Never threaten, and never mention collections agencies. - Never agree to a payment plan; propose it to the owner.
Nebo gives the employee its persona at the start of each session, together with its name, description and any triggers from the frontmatter, and the settings the owner gives it in Nebo: its personality, rules and soul. The persona is private to the employee; it is never added to a prompt that other employees share.
Write what the role is responsible for and how it decides. Leave out tool names and product names: the employee's tools come from its capabilities and connections, and the same persona must work in every company that hires it.
Memory
Every employee reads the owner's own facts and writes only to its own memory. It works with memory
through the remember, recall and forget tools. Choose how
its conversations and memory are kept with memory.mode in agent.json.
| Mode | Behavior | Use it for |
|---|---|---|
single | One running conversation and one memory. The default. | Most roles. |
separate | Many conversations share the employee’s private memory. A conversation with someone other than the owner, such as a caller or a visitor, keeps its own sealed memory. | Roles that talk to many people. |
confidential | Every conversation is a sealed matter. Nothing learned in one is visible in another, including the owner’s. | Client matters that must stay apart. |
"memory": {
"mode": "separate",
"topics": [
{ "slug": "account", "description": "A customer account: balance, promises to pay, contacts, disputes" }
],
"write_bar": ["web", "external-email"],
"share_with": []
} | Field | Meaning |
|---|---|
mode | single, separate or confidential. An older context_isolated: true is read as separate. |
topics | Up to 8 {slug, description} pairs that tell the employee what kinds of things to remember. Slugs are lowercase with hyphens; descriptions are 1 to 120 characters. Reserved slugs: tacit, entity, daily, project, memory, style, artifact. |
write_bar | A run that has taken in content from one of these sources cannot write to memory: web, external-email, channel, document, phone, coworker. When omitted, channel and phone are barred in separate and confidential modes. An empty list turns the bar off. |
share_with | Employee ids, or *, allowed to receive this employee’s memory in replies to them. Empty by default, which shares nothing. |
The company layer
The company layer is knowledge every employee shares: the company's vocabulary, the parties it
deals with, its rules, laws and standards, and reference material. It lives in packs on the bot.
A pack is a folder with exactly one marker file, INDUSTRY.md, FRANCHISE.md or COMPANY.md, and typed folders beside it. When layers
disagree, company wins over franchise, and franchise over industry.
<data>/packs/example-co/ ├── COMPANY.md ├── vocabulary/ ├── parties/ ├── rules/ ├── laws/ │ └── refunds.md ├── standards/ ├── workflows/ └── reference/
Every file in a folder is Markdown with optional frontmatter. The frontmatter carries structure,
such as a rule's always, a standard's id and value, or a
law's ceiling; the body carries the prose. A pack holds knowledge, never procedure, so
a pack that contains a skill is refused.
Laws
A law's ceiling lists operations that no employee may perform. On the company layer, reserved_to: owner changes that: the operations remain possible, but only with the
owner's own approval, and that approval can never be granted away.
--- ceiling: [ledger.refund.create] reserved_to: owner --- Refunds are issued only by the owner. Employees may prepare a refund and send it to the owner for approval.
How employees learn the layer
Employees do not look the layer up while they work. When a layer changes, each employee reads the
change once and rewrites its own rules. The owner can always edit COMPANY.md and every
company folder; saving a change is how the owner states what is true.