Glossary
Every Noeta term in one line or two, A to Z, with a link to the page that explains it. The authoritative source is CONTEXT.md.
A
- Activation — which loaded plugins an agent uses (
Options.plugins). Activation is part of agent identity; an unknown name fails compilation. → Options - Agent — a named, spawnable configuration (
AgentSpec): instructions, policy, tools, skills, budget, plugins. The "class" of a task, not a runtime entity. → Presets - Anchored placement — a resident renders where it was activated: in the semi-stable segment if before the first assistant message, otherwise inline in the history. → Context
- App plugin — a contribution to a host's own surface (routers, channels, schedules). Validated by the loader, handed to the host, never part of agent identity. → Plugin surfaces
- Artifact — a large object a tool returns alongside its inline output, listed as
ContentRefs onToolResult.artifacts. → Types - Attempt — one decide-then-act iteration inside a step; the unit of crash recovery. An interrupted attempt is sealed by
StepAttemptAbandoned. → Event log
B
- Backend bag — the
backendsmapping onSessionBuildContext: live objects keyed by plugin name ("browser","app_preview"). No entry means the capability is off. → Plugin surfaces - Browser tools —
browser_navigate,browser_click,browser_type,browser_extract,browser_screenshot. Need a live browser backend and thebrowseractivation. Not MCP. → Built-in tools - Budget — resource caps:
max_iterations,max_tool_calls,max_cost_usd,max_spawned_subtasks,max_subtask_depth.Nonemeans no cap; counters span the task's whole life. → Options - Built-in plugin — one of Noeta's 18 own capabilities under
noeta/builtins/, loaded through the same path as any external plugin.reactcannot be disabled. → Plugin system
C
- Content channel — how resident content enters context: a
ContextContentRecordedevent records it, aContentKindSpecrenders it. Tenants:skill,memory,instructions,environment. → Context - ContentRef — a pointer into the
ContentStore:hash,size,media_type. Looked up byhash. → Types - ContentStore — content-addressed, immutable storage for large bodies. Protocol members
getandget_many. → Event log - Context segments — the three parts of a View:
stable_prefix(system prompt, tool schemas),semi_stable(residents),dynamic_suffix(history, reminders). The prefix must stay byte-identical for the provider cache. → Context - ContextComposer — builds a View from folded state and the
ContentStore, with no LLM call. The composer is closed; extend it by registering a content kind or a reminder. → Context - ContextPlan — per-call metadata: which skills and messages were selected, dropped or cleared. Stored for audit and debugging. → Context
- Contract — a task's immutable header in its first
TaskCreatedevent:goal,policy_name,agent_name,inputs,parent_task_id,subtask_depth. → Tasks and waking - Control tool mount — a
control_toolcontribution that builds a control tool (TodoWrite,skill,Task…) after the tool set is assembled; returningNonedisables it. → Plugin surfaces
D
- Decision — what
Policy.decidereturns:tool_calls,spawn_subtask,spawn_subtasks,yield_for_human,wait_timer,wait_external,state_patch,compaction_requested,finish,fail. → Engine - Dispatcher — schedules tasks: enqueue, leases, wake delivery, reclaiming stale leases. Task state is never read from it. → Tasks and waking
E
- Engine — advances one task by one step (
run_one_step). Its main loop is fixed, not an extension point. → Engine - Event / EventEnvelope — one record on a stream:
seq,type,actor,origin,trace_id,causation_id, plus a typed payload. → Types - EventLog — one append-only event stream per task; the source of truth. Inline payloads are capped at 4 KB (
EVENT_PAYLOAD_MAX_BYTES). → Event log - ExecEnv — the backend fs and shell tools act through:
LocalExecEnv(host) orAioSandboxExecEnv(container). Never part of a tool schema. → Sandbox
F
- Fork — see Rewind and fork.
G
- Guard — a synchronous check before a tool call, spawn or finish, returning
allow,denyorrequire_approval. A guard that raises counts asdeny. → Engine
I
- Inspect — reading a task back:
Client.events/events_afterreturn raw envelopes,Client.messagesreturns the readable history. No side effects. → SDK - Instructions discovery — optional: activates
NOETA.md/AGENTS.md/CLAUDE.mdfrom directories between a file the agent read and the workspace root. Off by default. → Context - Interrupt — stops only the running turn (
TurnInterrupted); the task stays open for the next message.force=Trueclears a wedged step. On a pending question it withdraws the question instead. → SDK
L
- Lease — a worker's short exclusive hold on a task (
lease_id,task_id,expires_at), renewed by heartbeat, reclaimed when expired. Every append presents it. → Worker loop
M
- Memory — cross-task, file-based memory the model manages with
memory_write,memory_archive,memory_read,memory_search. Onlymainactivates it among the official agents. → Multi-tenant memory - Memory consolidation — a background agent (
__consolidation__) that merges, archives and tidies the memory store. Runs as its own root task; archives, never deletes. → Multi-tenant memory - Memory recall — before a turn, pages the message names ride in automatically; a page the model already read is skipped.
Options.recall_modeladds a small-model fallback. → Multi-tenant memory
O
- Observer — an asynchronous, read-only subscriber to the event log. It runs after commit; its failure never affects the task. → Engine
- Options — the declarative agent recipe (
noeta.sdk.Options), compiled into anAgentSpecplus its descendants. → Options - Origin — who wrote a message:
human,systemormemory(defaultNone, the role's natural author). Only the Engine sets it;system/memoryturns show asInjectedMessage. → Types
P
- PackContribution — what a session pack returns:
tools,content_kinds,init, and a few typed side fields. Empty means "not applicable". → Plugin surfaces - Plugin — a pip package or single
.pyfile with a static manifest naming its contributions. The manifest is read without importing plugin code. → Write a plugin - PluginSet — the result of
load_plugins(...), passed asClient(options, plugins=...). Auditable without running plugin code;.resolve()is the only import point. → Plugin manifest - Policy — decides the next step from a View (
decide(ctx, view) -> Decision). Default isReActPolicy, identity("react", "1"). → Engine - Principal — who is acting and which models they may use (
identity,allowed_models). Onlyprincipal_identityis recorded. → Options - Provider — an adapter to an external service.
LLMProvideris set withOptions.provider; adapters live innoeta.sdk.providers. → Connect a model
R
- Reminders — text added to context.
reminder_providerruns at intake and is recorded;reminderis pure, rendered at the history tail and never recorded; resident content is the third path. → Plugin surfaces - Resume — continuing a suspended task: fold its log, drive it under a lease. Triggered by a matching wake event (
send_goal,approve/deny,answer,deliver_event). → Tasks and waking - Rewind and fork — both branch at a user message. Rewind appends
TaskRewoundto the same task and restores edited files; fork starts a new task (TaskForked) and leaves the source intact. → SDK
S
- SandboxProvider — provisions and reaps a container per root task (
allocate,release,attach).ExecEnvthen talks to it. → Sandbox - Session pack — a
session_packcontribution that builds part of a task's tool set and residents from aSessionBuildContext. It returns an empty contribution when it does not apply. → Plugin surfaces - SessionBuildContext — the frozen input every session pack reads: workspace, content store, exec env, model, allowed tools, backend bag, plugin config. → Plugin surfaces
- Skill — a static workflow template at
.noeta/skills/<name>/SKILL.md. The model sees a menu of names and summaries; the body loads only when chosen. Not a tool. → Presets - Snapshot — a
TaskSnapshotevent pointing at the full state in theContentStore, written before each suspend and terminal event. Speeds up folding; not required. → Event log - Step — one Engine pass: compose → decide → dispatch, looping on tool calls until a suspend or terminal. → Engine
- Subtask — a task spawned by a parent, linked by
parent_task_idandsubtask_depth. Otherwise an ordinary task. → Subagents - Surface / SurfaceSpec — a named extension point and its description (plane, scope, validator, collision key, order). There are 16 standard surfaces. → Plugin surfaces
- Suspended — a task parked on a wake condition, whatever it waits for (subtask, approval, timer, external event). States:
pending,running,suspended,terminal. → Tasks and waking
T
- Task — one execution of an agent; the only first-class entity. It can spawn subtasks, suspend and resume. → Tasks and waking
- Task state slices — four slices, each with one writer:
RuntimeState(Engine),TaskState(Policy'sstate_patch),ContextState(fold),GovernanceState(fold). → Event log - TaskState — the slice holding the task's working memory: goal, phase, todos, decisions, active content. Per task, unlike Memory. → Event log
- Tool — an action the agent can call:
name,input_schema,description(what the model sees), plusversionandrisk_level. Not a skill. → Built-in tools
V
- View — the model input the composer builds for the policy; a projection of the task, not the task. → Context
W
- WakeCondition / WakeEvent — what a task waits for and what arrives:
SubtaskCompleted,SubtaskGroupCompleted,HumanResponseReceived,TimerFired,ExternalEvent. Delivered durably, exactly once. → Tasks and waking - Worker — a process that leases a task and drives it until its next suspend or terminal state. The loop is
WorkerLoop, exported fromnoeta.sdk. → Worker loop - Write fence —
EditandWritemay only write inside the workspace or host-approved roots (HostConfig.write_roots). Reads are not fenced, andBashis not confined. → Options
Words Noeta does not use
scripts/lint-naming.py rejects the class names Run, Workflow, Session, Mutator, Pattern and the identifiers WorkflowRunner, WorkflowPolicy, WorkflowSpec, SessionStore, ConversationManager.
- Run — say Task.
- Session — not an identity. A conversation is one Task receiving many goals; name things by
task_idorroot_task_id. "For the lifetime of one root task" as a scope is fine. - Workflow — not a primitive. Write a deterministic Policy plus
spawn_subtaskdecisions.