Agent Spec Keys
Each key of the agent spec, by its section: what it takes, and Link's own value where Link's spec sets one.
The agent and its model
The top of the file, [harness] and [model]: which agent it is, what
it extends, which harness runs it, which model it uses, and how hard it
thinks.
name
Lowercase letters, digits and dashes: the agent's own name, no other. A spec naming another agent is refused.
extends
"link" (as when left out), "link:personal" or "link:coding" (a
profile between Link's set and yours), or
"none": Link's set is empty.
owner and teams
Printed: whose it is, and the teams that list it. They're Link's to say, so a file never claims them.
[harness] name
Lowercase letters, digits and dashes: the harness that runs the agent.
Switching keeps every other opinion, a key the new harness doesn't take
included: the spec holds it still (REQUIRED).
[model] default and allow
default is the model when it names none, Link's per provider:
claude-haiku-5-5 on Anthropic, gpt-6-luna on OpenAI and
anthropic/claude-haiku-5.5 on OpenRouter, the same in every harness.
allow is the only models it may run; left out, any.
[model.aliases]
Names for models, each a word for a model as its provider names it, such
as high = "claude-opus-5-5". /model:set high, a subagent started on
high and a fallback of high each run that model. Only [model] takes
the table, never a provider's, and Link's spec has none.
[model] answer
The longest answer, in tokens, as you set it, at least 256. Link's is
window.answer's share.
[model] thinking and thinking_budget
thinking is off, low, medium or high, where the model thinks;
Link's is low. thinking_budget is tokens, at least 1024, for a
model that thinks within a budget; Link's is 2048.
[model.<provider>]
For anthropic, openai, openrouter, ollama or local: the keys
above, replacing only the keys it has, and transcribe. A provider's
table holds no tables of its own. Link's sets each hosted provider's
default.
transcribe
The provider's model that hears a voice note ([connections] voice), its
words the message's; left out or "none", a voice note is left out and
the agent told so. Link's is OpenAI's, gpt-4o-mini-transcribe.
fallback_model
The hosted model used when the primary model cannot answer, spelled
--fallback on the command line, a model or one of [model.aliases].
model.fallback independently controls whether a turn may use it. A
provider table cannot set this key.
[window]
How much of the model's window a turn fills.
max
The window it's sent, in tokens, at least 1024. Yours or a team's is used as set, and Link's is held to the model's window. Left out, the model's whole window; Link's is 128000.
unknown
The window of a model Link doesn't know, in tokens, at least 1024. Link's is 32768.
margin
The share kept back, 0 to under 0.5: tokens are counted roughly before a turn, exactly by the provider after. Link's is 0.125.
answer
The share kept for the answer, over 0 and under 1, and with margin
under 1, at most the model's longest, where [model] answer doesn't
say. Link's is 0.25.
compact_at
The share of the conversation's room it fills before its oldest turns
leave for a summary, over 0 and under 1; the rest is the summary's.
"never": they leave unsummarized. Link's is 0.75.
save_notes
Before it summarizes, the model saves what matters to its notes, where
the agent has a tool to save with (memory__remember), in a
conversation you spoke in (never one of others' messages alone).
Link's is true.
[turns]
How long a turn may go on, and what a new message does meanwhile.
rounds and calls
rounds is the most rounds of calls in one turn, from 1, Link's 8;
calls the most calls one answer makes, from 1, Link's 16.
busy
What a message sent while it answers does: queue (answered after),
steer (joins the answer) or interrupt (ends it). Link's is steer.
renew and lapse
renew is how often a running turn renews its lease, at least "1s",
Link's "10s". lapse is how long a lease not renewed lasts before
its turn is taken for crashed and finished, more than twice renew,
Link's "60s".
[instructions]
What the agent is told, in sections: Link's, a file in its files, or none.
base
The prompt's first section, what any agent of yours is: link (Link's,
a personal agent who answers briefly), none, or a file in its files
(instructions/base.md). Link's is "link".
environment
Its fourth: where its files are, which folders it may change, its
connections, as Link resolved them at its start; link, none or a
file. Link's is "link".
skills
Its fifth: each skill's name and what it's for, from
skills/<name>/SKILL.md in its files, sorted by name; link, none or
a file. Link's is "link".
persona
Its sixth: who it is, whatever the task (its name, its voice, its
character), a file of yours in its files, read at each message, or
none. Link's is "instructions/persona.md".
owner
Its seventh: who you are (your name, your work, the people in your
life, how you like things), a file of yours in its files, read at each
message, or none. Link's is "instructions/owner.md".
standing
Its eighth: your standing instructions, a file in its files, read at
each message, or none. Link's is "instructions/instruction.md".
now
The date, the time here, the connection and who's speaking, at the head
of each message, never in the system prompt: link or none. Link's
is "link".
notes
Its ninth: what the agent noted for itself, the file its memory's
remember writes, read at each message, or none. Link's is
"memory/notes.md"; the old default instructions/notes.md reads as
memory/notes.md without rewriting the spec.
[instructions.max]
Each section's most, 64 B to 64 KB, by its name: base, model,
tools, environment, skills, persona, owner, standing, now
and notes. What's past it is cut, the skills and tools whole.
Link's sizes
16 KB, 8 KB, 8 KB, 4 KB, 8 KB, 8 KB, 8 KB, 32 KB, 512 B and 4 KB, in that order.
The model's and the tools' sections
The model's (second: instructions/models/<maker>/<model>/instruction.md
in its files) and the tools' (third: what each tool says of itself)
have no source key, only this.
Which harness takes them
[instructions] holds only for a harness whose contract says it
takes them, which Link Harness does; a start refuses it for any other,
rather than ignore it. lnk agent show --instructions prints the prompt as
the model gets it. The rest of the spec is handed to every harness
(Settings.spec), which takes what it can. Its sections come in the order of how often each changes, least first,
so the provider's cache holds; sections 2 (model) and 3 (tools) have
their places and no keys.
[tools] and [tool.<name>]
What holds for every tool, unless its own table says otherwise, and one tool's own, by its name.
answer
What's kept of a tool's answer, 1 KB to 16 MB, Link's "32 KB"; in
[tool.<name>], the same for one tool.
timeout
How long a tool's call may take, at least 1 second; past it the model
is told it didn't answer. Link's is "5m"; in [tool.<name>], the same
for one tool. Waiting for you to allow it isn't counted: a call of a
tool not Link's own has [connections] ask_wait beside it.
strangers
The tools a stranger's message may use, by the names the harness offers them; left out, none (Who May Talk to It).
enabled
In [tool.scheduler], [tool.run], [tool.file] and [tool.code]:
whether Link starts the tool for the agent. false or left out, it
doesn't: for the scheduler, no subagents or schedules, and nothing runs
them. Link's is true.
[tool.memory]
keep, how long its session stays once no turn uses it ("10m");
max_age, how long its session lives at most ("1h"); and tokens,
the most a search or a read gives, at least 100 (6000).
[tool.memory] model and notes
model is the embedding model it ranks by, qwen3-embedding; none,
by words only, no model started. notes is the most the agent's notes
may grow to, 64 B to 64 KB, "4 KB": remember refuses to write past
it.
[tool.web] fetch
The most of a page one fetch gives, 1 KB to 1 MB; each part says where
the next starts. Link's is "24 KB".
[tool.run] timeout and output
timeout is a command's call, "2m": the command is stopped a tenth
before it, with all it started, so what it printed comes back. output
is what's kept of each of a command's output and its errors, its start
and its end, 1 KB to 16 MB, "16 KB".
[tool.run]'s background commands
How many background commands the run tool keeps, and for how long.
background and background_timeout
background is the most background commands at once, 0 to 64, Link's
4; 0, none. background_timeout is the longest a background
command runs before it's stopped, 1s to 7d, Link's "1h".
background_output and background_keep
background_output is what's kept on disk of a background command's
output, its end, 1 KB to 1 GB, "16 MB". background_keep is how long
a background command's record and output stay once it ended and the
agent was told, 1m to 365d, "1d".
background_per_day
The most background commands started in a day, each of whose endings
starts a turn, 1 to 65535. Link's is 100.
[tool.scheduler]
The scheduler tool: the agent's schedules and subagents.
per_day
Messages its schedules and subagents send it a day, the day in its
zone, from 1. It bounds how many messages agents send each other, and
caps what the agent takes from each teammate a day (UTC). Link's is
100.
subagents and hops
subagents is subagents at work at once, from 1, Link's 5. hops is
how deep a chain goes, from 1, each message sent by an agent on its
own, Link's 8: a depth and not a count, as a recurring job's firings
start again.
late
A firing missed asleep: run once on waking, or skip (a recurring
one fires at its next time). Link's is run.
ask and zone
ask is whether task, schedule and cancel ask you first, Link's
false. zone is its times' time zone: local (this machine's) or a
zone's name (Europe/Paris), Link's local.
firing
How long it waits on a firing, a subagent's whole work, before giving
up on it, 1s to 1d. Link's is "30m".
driver
What wakes its runner: service, the agent's bridge, which runs it for
good (Link's), cron or address. In the foreground (lnk agent start --foreground), it runs beside the agent either way.
cron
The machine's calendar (launchd on a Mac, the user's crontab
elsewhere), which starts it once a minute: lnk agent start puts the
calendar's entry in place and lnk agent stop takes it away.
address
On a machine that runs the agent only while it answers: the scheduler tells the machine, at the address it gives, when the agent's jobs are next due whenever they change, and the machine wakes the agent then to fire them; nothing of the scheduler runs between.
address on your machine
lnk agent start gives no address, so it serves no scheduler for
address, and says so. The bridge still runs, for the connections and
the way in a firing reaches.
[goals], [storage] and [run]
How long /goal goes on, where each collection is kept, and how the
agent runs on its machine.
[goals] turns and tokens
How long /goal pursues a goal on the agent's own turns, whichever
comes first: turns, 1 to 1000, and tokens, at least 1000; Link's 10
and 1000000. Left out, there's no /goal.
[storage]
home, instructions, skills, memory, conversations and
schedule: where it would keep each collection, a place's name,
lowercase letters, digits and dashes, Link's "file" each
(Storage).
A preference
It's a preference: the machine's [storage] has the last word
(Specs).
An older spec's log or compact reads as file.
[run] idle_after
How long the agent goes with no message, no turn and no background
command before it stops, holding no process, memory or port, and starts
again at its next message, at least 1s, or never. Link's is
"5m".
Where it holds
Only where machine.toml's shared_bridge is on, since the bridge
then listens for it, and for an agent whose harness speaks none of its
connections itself (Security).
[run] files
The workspace directory, spelled --files on the command line. A supplied
spec is loaded before this setting is read. Relative paths are resolved
from the start's working directory; left out, it keeps its chosen workspace.
[run] let_sleep
Whether the machine may sleep while the agent runs, spelled --let-sleep
on the command line. Left out or false, the agent keeps the machine awake;
true allows the machine's own sleep policy to apply.
[connections] and [connection.<name>]
What holds for every connection, and one connection's own, by its plugin's
name, with the same keys over [connections].
stream and pace
stream shows the answer as it's written, Link's true; false, once
done. pace is how often it's shown again, over 0, Link's "1s".
pace and the platform's limits
Never more often than the platform documents a bot may write: Telegram once a second in a chat and every 3 seconds in a group, Slack every 1.2 seconds, and Discord its global 50 requests a second and its other rate limits as it answers them.
Told to wait
Told by the platform to wait, Telegram and Slack show nothing more until then, and only the finished answer waits and tries again.
activity
While the answer is shown as it's written, each tool it calls on a line
above it (› memory search), the latest eight; the finished answer
shows the answer alone. Shown where its harness tells its calls, as
Link Harness does; link:personal turns it off. Link's is true.
groups
In a group, which of your messages it answers: mention (those that
mention it or answer it), Link's, or never.
working and steered
A reaction while it answers, and on a message that joined an answer,
where the connection has them; empty ("") is none, as in Link's
[connections]. Of Link's connections only Slack marks a message, so they
are refused for Telegram, Discord and Signal; Link's
[connection.slack] has working = "eyes".
ask_wait
How long a question for you waits for your answer, a call of a tool
that asks first or a page to open: Link's "10m", a second at least and
a day at most. No answer in time is no, and a tool's call has its own
timeout beside it. [connections]'s alone, since a question waits as
long on every connection.
Feature switches
Each a feature's switch, off when left out, Link's "link" or true
(Features and Profiles).
Which keys
[instructions] repository; [commands] help, status, create,
stop, model, write, goal, resume, fork, rename, export,
queue, steer, compact, ask, verbose and skills; [model] fallback; [connections] images,
documents and voice; and [tool.file] find and diffs.