Skip to main content
Veryfront Code uses primitives to separate responsibility. A primitive is an ownership boundary: it names what kind of work is happening, what lifecycle owns that work, and where the runtime boundary sits. The goal is not to use every primitive. The goal is to pick the smallest one that explains the work clearly.

Primitives

PrimitiveOwns
AppUser-facing routes, APIs, data, and rendering.
AgentModel reasoning, messages, tools, and output.
ToolOne callable capability.
SkillReusable agent instructions and tool policy.
PromptReusable instruction templates.
ResourceReadable project data for MCP.
TaskA background work target.
WorkflowMulti-step coordination.
RunDurable execution of work.
ScheduleScheduled run creation.
IntegrationExternal service capabilities.
MCP serverAssistant-facing tools, prompts, and resources.
SandboxIsolated command and file execution.
ExtensionsReplaceable runtime infrastructure.

How primitives combine

Features can combine primitives, but one primitive should own the triggering event and primary lifecycle. For example, an app route can receive a webhook. A workflow can coordinate the response. A task can run slow background work. An agent can reason about a user-facing decision. A skill can give the agent task-specific instructions. This keeps the project understandable. The app owns entry points. Agents own model decisions. Tools own deterministic actions. Workflows own process. Runs own durable execution. Extensions own replaceable runtime infrastructure. For task-focused selection, see Choose a primitive. For exact agent runtime APIs, see veryfront/agent.