Abstract
This paper proposes a vendor-neutral reference architecture for building and operating AI agent systems. It identifies the system’s main elements, assigns responsibilities to them, and describes how an Agent Project becomes a release, how releases create long-lived instances, and how those instances retain work across sessions. The architecture gives developers, framework authors, and platform operators a common model without requiring one implementation or project format. The architecture applies to products built around persistent, tool-using agents. A request, event, or schedule can start work. The agent chooses intermediate actions within application guardrails. After a run ends, the instance retains its workspace, credentials, artifacts, and unfinished work. This paper calls the complete product an Agent Application. Developers build these systems as hybrid programs of conventional code, natural-language instructions, declarations, and knowledge. A harness runs the agent loop. An Agent Application Framework is a harness that also supplies a coherent project structure, development tools, evaluations, packaging, deployment, and production runtime support. An Agent Application Platform turns a tested project into an immutable release, provisions and operates long-lived instances with durable workspaces, and provides identity management, security controls, governance, observability, evaluation, and fleet management. It attaches scoped credentials to each instance and enforces permissions, spending limits, network destinations, and approvals. Long-lived instances accumulate different facts, artifacts, generated code, and unfinished work. If they can also add or edit natural-language instructions, they diverge in program as well as state. Operators then manage and govern a fleet whose members no longer share one program: rollout, audit, and policy have to follow each instance’s local program and state, not only the shared release. They must preserve per-instance work, test a new release against existing instance state, and keep enough evidence to explain or recover consequential actions. Edited published instructions have to be merged semantically on upgrade: copy and line-based merge miss how one instruction changes another. The paper provides a layered system model, a capability model, lifecycle and security views, and a method for applying the architecture. It defines Agent Application Programming as the discipline of programming Agent Applications: designing, authoring, and evaluating a hybrid program of code, natural-language instructions, tools, agents, workflows, state, and policy. It also defines an Agent Application Store as a catalog and commerce service through which people find, acquire, and pay for Agent Applications. The architecture locates current standards such as the Model Context Protocol (MCP), Agent Skills, Agent Plugins, and Agent2Agent (A2A) at the boundaries they cover, and identifies where new standards are still needed. Teams can use the paper to reason about the complete system, decide who owns each responsibility, compare implementations, and see which boundaries need to interoperate.Purpose and scope
Teams have built persistent, tool-using agents as product-specific systems. Core pieces are now becoming reusable components and standards: harnesses, MCP, Agent Skills, Agent Plugins, agent-to-agent protocols, and sandboxed execution. Products still use different names and divide responsibilities differently, which makes the recurring system shape hard to see and implementations hard to compare. This paper identifies that recurring shape. It covers the complete system in which an agent operates: projects, releases, instances, workspaces, authority, artifacts, user and machine interfaces, platforms, stores, and operations. It does not specify the model’s internal reasoning algorithm or require a particular agent loop. The architecture identifies the elements that commonly appear, the responsibilities they carry, and the boundaries between them. A product may combine several elements in one service or obtain them from different vendors. This paper is not a technical standard, a portable package format, or a reference implementation. A concrete system can use different names, source layouts, technologies, and deployment models. The useful questions are whether the system handles the responsibilities described here, who owns each one, and which boundaries need to interoperate.Who should read this paper and why
Guided reading paths
This is a long paper because it covers application design, development, operation, security, and ecosystem roles. Readers can follow it in order or use one of these shorter paths.
The architecture separates common responsibilities from implementation
choices. Not every application needs every optional capability. A small agent
may have one interface and no schedules, while a business application may need
background work, several agents, approval gates, artifacts, and fleet
operations. In either case, the design should state where durable state lives,
where authority is enforced, and which component owns each capability.
Figure 1. System context.
Part I: The shape of an Agent Application
1. What is an Agent Application?
ChatGPT and Claude use agent widgets. An OpenClaw agent may appear as a WhatsApp or Telegram contact. GitHub Copilot’s coding agent and Cursor Cloud Agents can start from an issue or pull request and return their work there. A Microsoft Copilot Studio autonomous agent can wake in response to a business event without presenting a conversational interface at all. What do these systems have in common? Each gives a tool-using agent a continuing scope of work. Later messages or events return to that work, and the results remain after a run ends. They have different interfaces and jobs, but the same underlying application shape. This paper calls it an Agent Application. An Agent Application uses one or more persistent, tool-using AI agents to produce or maintain durable results. A request, schedule, or outside event can start the work. The application sets the available tools, permissions, policies, and other guardrails. Within those limits, the agent inspects the current state and chooses what to do next. Its work can continue across sessions, and the results outlive the model call that produced them. Consider a Financial Advisor Agent that works with Maya. She uploads tax returns, account statements, and retirement plan documents, then authorizes read access to accounts at her financial institutions. The agent periodically retrieves new records, reconciles them with the material she uploaded, and alerts her when it finds a change worth reviewing. When Maya considers taking a year away from work, she asks how the change could affect her retirement plan. The agent draws on the financial history in her workspace, writes code to run cash-flow analyses and retirement simulations, records its assumptions, and presents the results. Months later, it can show which records, assumptions, and simulations informed its analysis. Doing this over years requires more than a model response or transcript. The application routes Maya’s messages, scheduled reviews, and retrieved records back to the same agent instance. Its workspace preserves uploaded documents, account snapshots, analysis code, assumptions, reports, and unfinished work. The harness / Agent Application framework runs the reasoning loop. Tools give the agent read-only access to financial institutions, and a sandbox executes its analysis code. Compute can stop when Maya’s instance is idle, but the instance and its work remain. Its scoped credentials permit read-only retrieval when a request or schedule wakes it. The application can analyze data, produce reports, and notify Maya, but it exposes no tools for changing accounts or moving money. An audit record preserves how it produced each report. New releases can improve the application without discarding the context it has accumulated with Maya. Its persistent instance, durable workspace, tool use, scheduled work, and lasting analyses make it an Agent Application.2. From web and mobile applications to Agent Applications
Desktop, web, and mobile applications each gave developers a recognizable way to assemble a complete product. A desktop application joined native code, an operating system, local files, a graphical interface, and an installer. A web application joined browser code, application servers, databases, HTTP, and cloud infrastructure. A mobile application added a device runtime, sensors, notifications, identity, and an app store. Agent Applications change how control, context, and work are handled. A request, event, or schedule supplies a goal, and the agent chooses intermediate actions within authority, policy, cost, and approval boundaries. Its instance retains context and working state over a long horizon. The work also persists as artifacts, workspace changes, external records, or continuing processes.
The web application architecture is a useful point of comparison. Both models
separate application development from managed operation, and both give the
developer a framework within which to build.
Figure 2. Web and Agent Application lifecycles.
3. Architectural drivers and design principles
The splits in section 4 exist because a persistent, tool-using agent has to keep work, act later, and do so under someone else’s authority. This section names the pressures. It uses three terms that later sections define more carefully. An instance is a long-lived copy of the application for one person, team, customer, or other privacy domain. Its workspace is the durable state that copy can reach. A release is a fixed version of the shared program.- The complete application is the unit of development and evaluation. Behavior comes from conventional code, natural-language instructions, declarations, knowledge, and dependencies acting together. A tool can be correct while the agent calls it at the wrong time. Testing a prompt or a model call is not the same as testing the application.
- The agent should operate over a computer, with limits in policy code. General-purpose agents get their leverage from a filesystem, a shell, and a network: they read and write files, run scripts, install tools, and keep that environment across sessions. As models get better at reasoning and following instructions, that environment should stay general and the harness around it small. An ever-growing kit of special-purpose tools and prompt-level partitions is the weaker path. Credentials, permissions, spending limits, and network rules still have to be real. They belong in code the agent cannot change. They wrap the computer rather than replace it. Section 14 develops this design.
- The privacy boundary is the instance. The agent has access to its entire workspace. Natural-language instructions that tell it to keep one person’s data apart from another’s are not a privacy boundary. The model can be tricked into ignoring them. People, records, and work that must not mix belong in separate instances, even when compute is suspended.
- The shared program and the instance’s work have different owners. A publisher ships a release. Each instance then accumulates files, artifacts, local instructions, and unfinished work. A later release can improve the shared program. It must not silently discard that instance’s work.
- Test a release against the workspaces it will meet. If an instance edited a published natural-language instruction, merge that instruction semantically on upgrade. A release can pass every fixture and still fail on one customer’s history. Copy and line-based merge miss how one instruction changes another.
- Consequential actions need evidence and a way to recover. An agent can send a message, change a record, or spend money, then suspend for weeks. An operator should be able to explain what happened, resume interrupted work, and respond when an outside effect cannot be reversed.
- The work should survive a change of provider. Instances last. Export and migration need to carry artifacts, workspace state, lineage, and references to authority, without copying raw secrets.
4. The Agent Application stack
An Agent Application spans seven layers, from model inference to the use case delivered to a person or organization. These layers implement the drivers in section 3. Figure 3. Seven-layer Agent Application stack.
The boundaries between harnesses, frameworks, and platforms are still moving.
Claude Code and Codex define project conventions and local development. Vercel
Eve adds a prescribed layout, durable execution, sandboxes, approvals,
evaluations, tracing, and delivery across several channels. Amazon Bedrock
AgentCore provides parts of the production layer.
5. From human-operated to agent-operated software
Conventional applications treat a person or a predefined workflow as the operator. The software exposes menus, screens, forms, and APIs. A person chooses what to do and sequences the operations, or a developer encodes that sequence in advance. An Agent Application divides control differently. Developers and operators set the guardrails: available tools, permissions, budgets, policies, triggers, and approval rules. When a user request, schedule, or outside event starts a run, the agent reads the current state and chooses the next action. It can plan, define workflows, invoke tools, create and revise artifacts, delegate work, and continue until it reaches an outcome or a boundary that requires outside input. The definition does not require a person to approve every action. A Financial Advisor Agent may retrieve read-only account data and run scheduled analyses without asking each time. A backend operations agent may process a low-risk record without waiting for anyone. In both cases, code defines the allowed space and the agent chooses a path through it.
An agent does not need a particular interface. The same agent may appear as a
full-screen conversation, a copilot inside another product, a phone number, or a
backend worker.
6. Recognizing an Agent Application
The definition in section 1 does not depend on the user interface. Four properties distinguish an Agent Application from adjacent systems:
The Hello World Agent Application
shows the smallest complete example: a notebook agent saves a note, suspends,
and uses that note to update a briefing on a later run.
Different products assign the instance and workspace to different privacy
domains.
6.1 How to decide who gets an agent instance
An agent instance has access to its entire workspace. If a workspace holds information about several people, customers, or cases, the agent can combine that information in its reasoning, summaries, and artifacts. Those entities belong in the same instance only when that mixing is acceptable. The privacy boundary therefore decides who gets an instance. This boundary also limits prompt-injection damage. Teams sometimes keep mixed data in one workspace and tell the agent, in natural language, to keep one person’s material apart from another’s. Those instructions are not a privacy boundary. The model can be tricked into ignoring them and combining, quoting, or leaking the partitioned material. Separate instances keep that material outside the agent’s reachable state. The same boundary extends to data reachable through tools and retrieval systems. A user-initiated call should not return information that the authenticated user cannot access. The Financial Advisor Agent therefore gets one instance per person or household, depending on who is authorized to share financial records. A human resources (HR) helper that handles personal employee matters gets one instance per employee. A business-to-business (B2B) support agent can keep many tickets for one customer in the same workspace, so each customer gets an instance. A virtual employee acting as a marketing expert can have one instance shared by a whole team because the team itself is the privacy boundary. The application builder chooses the boundary and a stable instance identifier. A Financial Advisor Agent may usehousehold_id, so every user in that
household reaches the same instance and workspace.
6.2 A durable computational workspace
The workspace holds the state the agent needs in order to continue: instructions, files, memory, artifacts, code, configuration, and derived data. The runtime may keep that state in a database or object store. It may also give each session an ephemeral filesystem, then retain selected file changes and artifacts so later sessions can retrieve them. The underlying storage can vary. The usual design gives each instance an isolated persistent virtual computer: a filesystem, a shell, and network access. The agent uses ordinary file operations, scripts, and command-line tools on documents, code, local databases, installed packages, and work in progress. It does not need a schema or a custom API for every new kind of state. The platform can restore compute around that environment when the agent wakes, or keep it running when the application needs a long-lived process. Section 14 states this design more fully. A later task must be able to use and change the working state left by an earlier one. A transcript can remind an agent what it said. A workspace lets the agent continue the work itself. A durable workspace is useful when the work accumulates derived or in-progress computational state that an external system of record cannot represent. It can also be an expensive part of this model. Section 16 draws that boundary.6.3 Durable work
Durable work may be an artifact the agent created, a workspace change, a record in an external system, or a continuing process. The work persists after the session that produced it ends. Later sessions and state-access APIs can use it.6.4 What is not an Agent Application?
The boundary is fuzzy, as it is between a web page and a web application. Many jobs are served well without a full Agent Application, and some of those jobs can later become one. A chat interface does not make a system an Agent Application. A Q&A chatbot and a Financial Advisor Agent can share a conversational UI. The chatbot is not an Agent Application if it does not keep working state across sessions and does not produce durable work. Turning it into an Agent Application can add capabilities such as personalization from prior work. Several adjacent systems fall outside the category:
A conventional n8n or Zapier flow remains workflow automation when its graph
determines the next step. Dependabot
is a boundary case: it monitors configured package ecosystems and opens
pull requests according to schedules and update rules. The pull request is
durable, but the configuration determines the control flow. A simple Q&A bot
remains a chatbot when each conversation stands alone. An Agent Application may
contain deterministic workflows and answer questions, but its continuing unit
is a persistent agent that chooses actions from the current state and leaves
durable work behind.
7. Where people encounter AI agents
Agent Applications reach people and software through interfaces suited to their work. The agent widget is the most common user interface. It may fill the product window or appear as a sidebar, panel, or popup. Here, widget means a reusable interface component; it may occupy any amount of screen space.
The widget renders an event stream from the agent runtime, not just a message
history. When a user returns to a session, the client must replay those events,
restore the artifacts and interactive controls, and reconnect to any live run.
It must also preserve the identity and permission context behind every approval
and tool action.
ChatKit,
CopilotKit, and AI SDK
Elements package parts of this
surface. AG-UI defines a typed event connection
between a frontend and an agent backend. MCP
Apps lets an MCP tool
return an interactive view that the host renders in isolation.
Other surfaces connect the same persistent instance to existing software and
background events.
One agent can span several of these surfaces. A copilot can be backed by an Agent
Application; a channel only determines where the person and agent interact.
8. Vocabulary
The word agent now refers to products, runtime processes, assistants, and packaged configurations, sometimes in the same discussion. This paper uses the following terms consistently. This paper uses app as the shortened form of application. Agent App and Agent Application are synonymous. The same applies to terms formed from these names: Agent App Programming, for example, is the shortened form of Agent Application Programming.
The broad meanings are useful in ordinary discussion. A developer will say, “I
am building an agent,” just as a web developer says, “I am building a web app.”
When architecture or operations require precision, this paper names the agent
project, release, instance, session, runtime agent, workspace, or interface
directly.
Part II: Applying the architecture
9. A build-and-operate method
The architecture is useful when a team turns an idea into explicit design decisions. The following method is illustrative. Teams can use different documents, tools, and release processes while answering the same questions.
Framework selection follows from the capability map. A team should compare
harnesses on the needs of its workload, including tools, code execution,
subagents, schedules, approvals, model choice, context use, evaluation, tracing,
and faithful deployment of the native project. Section 12 provides the
capability model and a sourced comparison of current harnesses.
Evaluation should cover both clean fixtures and representative accumulated
workspaces. A production failure that exposes a new behavior belongs in the
regression suite. Platform staging should also exercise the hosted sandbox,
credentials, network policy, event delivery, approvals, schedules, and artifact
rendering because those conditions differ from a developer’s machine.
10. A reference lifecycle
The lifecycle connects development, release management, and long-lived operation. A release can create many instances. Each instance can run many sessions and retain one workspace across them. A later release changes the shared program but does not replace the instance’s accumulated work. Figure 5. Release and instance lifecycle.1.0, and each customer receives a separate instance and
workspace.
Maya’s instance accumulates records, account snapshots, assumptions, analysis
code, retirement plans, reports, and checkpoints. A request or schedule starts
a session, but the workspace remains when the session ends.
During one planning session, Maya tells the agent that she has committed to pay
a family member’s tuition for the next four years. The default version 1
retirement-analysis skill does not handle this obligation consistently across
scenarios. An approved local change teaches Maya’s instance how to include the
commitment, creating a modified copy of the version 1 skill in her local program
state.
The company later publishes version 1.1 of the retirement-analysis skill with
improvements for every instance. Replacing Maya’s skill with a fresh copy would
discard her local treatment of the tuition commitment. Keeping her modified
version 1 copy would omit the publisher’s improvements. The platform therefore
integrates the version 1 to version 1.1 change into Maya’s modified skill by
meaning, then evaluates the result against her workspace. The evaluations check
the new shared behavior and the local commitment before the platform activates
the upgrade.
Releases and instances therefore need separate lineages. Release evaluation
cannot cover every change accumulated by every instance. Staged rollout,
instance-aware evaluation, semantic merging, and checkpoints support upgrades
without erasing local program state.
Maya may also share a live Agent Artifact, such as an interactive retirement
plan. The artifact depends on current balances and source documents that cannot
be embedded in a standalone file. Its record carries governed references to
the exact data it needs. When Maya shares the artifact, she can give the
recipient a revocable, artifact-scoped grant to those specific resources. If
the artifact moves to another platform, that platform resolves the references
and obtains fresh authorization for any grant that cannot transfer.
Part III: Building Agent Applications
11. A hybrid programming model
An Agent Application combines four kinds of material: conventional code, natural-language programs, declarations, and knowledge or assets. Developers package this material in the Agent Project. After deployment, an instance may also acquire code, instructions, knowledge, or assets as local state.11.1 Conventional code
Conventional code remains the right tool for:- deterministic, repeatable processes;
- hard security boundaries;
- exact data transformations;
- APIs and protocol adapters;
- tool implementations;
- database operations;
- cryptography;
- deterministic validation;
- resource accounting;
- rendering and user interfaces;
- performance-sensitive work.
Authorization
header of every HTTP request. If the server requires another scope, the client
can ask the user to authorize it and retry the request.
The application still has to bind three identities correctly: the authenticated
user, the agent instance, and the external account. For user-initiated work, the
MCP client uses the user’s delegated grant rather than a shared platform
credential. The MCP server validates the token and enforces permission for the
exact tool and resource before returning data or taking action. If it calls an
upstream API, it uses a separate upstream token; the MCP specification forbids
passing the inbound MCP token through. These bindings matter when several users
share one team agent or when the same user has instances with different
authority.
Tool calls also have a lifecycle. A timeout may leave the agent unsure whether a
calendar event was created, and a blind retry could create it twice. Stable call
IDs and idempotency keys let the tool recognize the same logical action. A
long-running operation needs a durable job handle, progress, cancellation, and a
way to collect the result after the agent reconnects; the MCP Tasks
extension defines
one such pattern. Parallel calls introduce ordering and concurrency problems.
Conventional code enforces these guarantees and records each request, approval,
retry, result, and error for audit.
Runtime code execution
An Agent Application may make scripts and executables available to the runtime
agent. Some are packaged with the release; the agent may generate others while
working. The agent can invoke this code through a shell, interpreter, or
code-execution tool, and conventional compute runs it in the application’s
execution environment.
If the instance retains generated code for later execution, it becomes part of
the workspace and local program state rather than the immutable release.
11.2 Natural-language programs
Natural language becomes program material when changing the text changes runtime behavior. Agent developers already write this material in several common forms:- Project instruction files such as
AGENTS.md, Claude Code’sCLAUDE.md, Gemini CLI’sGEMINI.md, and harness-specific equivalents set operating rules for an agent working in a particular environment. - The Agent Skills specification
packages a reusable procedure in a
SKILL.mdfile, with optional scripts, references, and assets. - Subagent definitions describe specialist roles, the tools they may use, and the instructions they follow when the main agent delegates work to them.
11.3 Project declarations
Project declarations are structured configuration that a framework or its tooling reads to assemble and run an Agent Project. They name entrypoints and components, select models and harness features, configure tools and triggers, declare package dependencies, and state requested permissions or runtime requirements. An Agent Plugin’splugin.json and mcp.json files are
declarations contributed by a project dependency.
Some declarations describe deployment requirements and become part of the
release. The platform resolves those requirements when it deploys the release.
Secrets, granted authority, user data, and per-instance settings remain outside
the project and release.
Declarations change application behavior, but a processor does not execute them
as ordinary code and a model does not interpret them as instructions. Version
and review declarations with the source they configure. Validate them against a
schema where one exists, then test the assembled application. A syntactically
valid MCP declaration can expose the wrong server, and a valid dependency range
can resolve to plugin content the application has never evaluated.
11.4 Knowledge resources
Knowledge supplies the material the application reasons over:- product and domain documentation;
- customer files;
- policies and manuals;
- source code;
- research material;
- prior artifacts and templates;
- schemas;
- organizational context.
11.5 Two kinds of execution
An Agent Application uses two kinds of execution. A conventional computer executes deterministic code, tool implementations, filesystem operations, and resource limits. A large language model (LLM) interprets natural-language programs, reasons about the current state, and chooses actions. The agent harness coordinates both. It assembles the model’s context, exposes tools backed by conventional code, loads the application’s instructions and knowledge, and carries the reasoning loop forward. The same instruction can behave differently with another model, harness, tool set, or workspace state. A release therefore records the model and harness versions it was tested against, along with its conventional runtime dependencies. This does not guarantee identical answers. It tells an operator which combinations the developer has checked. Appendix D gives the fuller runtime contract.11.6 Test the whole application
Each part of an Agent Application needs a different test. Developers test code with ordinary software tests. They test natural-language instructions by giving the agent representative jobs and judging its behavior. They validate declarations and dependency resolution, then check knowledge for source, freshness, and permission. A tool may work perfectly, yet the agent may choose it at the wrong time or supply an incorrect argument. Release testing therefore has to run the whole application, not just its code.11.7 Agent Application Programming
Building an Agent Application requires more than writing prompts or connecting tools. Someone has to decide which work the model may judge, which behavior code must guarantee, how agents divide and hand off work, what state persists, and which outside components the application can trust, then author that program and evaluate the complete application. This work is Agent Application Programming. The discipline operates at two scales. At the local scale, a programmer decides whether a behavior belongs in agent instructions, a skill, a tool, a hook, a subagent, memory, or the agent loop itself. At the application scale, the programmer composes those primitives into a product. This includes:- separating a use case into model judgments and deterministic operations;
- placing each behavior in the primary agent, reusable instructions, skills, tools, hooks, specialist agents, or runtime policy;
- applying graph engineering to dynamic workflows and deciding which transitions conventional code determines and which the model chooses at runtime;
- selecting external capabilities from plugins, MCP servers, libraries, APIs, and other dependencies;
- assigning state to sessions, instances, workspaces, memory, and artifacts;
- designing interfaces, triggers, permissions, evaluations, observability, and cost controls around the resulting system.
12. The agent project and capability model
An Agent Application is authored as a project for a particular harness / Agent Application framework. In a code-oriented framework, the project is usually a source directory. A managed or visual builder may store the same material in another form. This framework-native representation is the agent project. It contains the code, instructions, knowledge, configuration, and tests used to build and run the application. The project stays in the framework’s native form. This is similar to how Next.js and Rails both build web applications, but they use different route files, project conventions, and release bundles. They interoperate through the web platform and its protocols. Agent frameworks can likewise support common protocols while keeping their own project layouts and programming models. The choice of framework affects the finished application. Its conventions, defaults, and design philosophy about model support, context strategy, tool system, execution environment, state model, event stream, and debugging facilities all shape behavior and cost.12.1 A capability model for Agent Applications
The table lists capabilities found across current Agent Applications. Each project uses the subset its job requires. A small application may need only an agent program, a few tools, an interface, and tests. A long-running business application may need every row.
Framework authors can use the table to describe what their frameworks handle.
12.2 What a project may contain
A project can group its source material like this. The names describe parts of the project, not required filenames or a portable package format. Each framework maps them onto its own files. A small project omits unused parts. A platform may keep some operational settings outside the repository.12.3 Where existing standards fit
Standards help when independently built systems need to communicate. An internal interface controlled by one framework can follow that framework’s own design.
These standards play roles similar to HTTP, HTML, and package formats in web
applications. A framework can use several of them while keeping its own source
layout, build process, and deployment model.
12.4 How current harnesses expose the capabilities
This comparison focuses on Goose, Claude Code, Deep Agents, OpenCode, and Vercel AI SDK. Each already covers much of the capability model and has a project or runtime boundary that could develop into an Agent Application framework. The table uses first-party documentation available on August 11, 2026. Each entry names the path the project documents. “Project code” means that the application assembles the capability from general APIs. “Platform service” means that a deployment or hosting layer supplies it. These terms describe ownership and packaging, not a pass/fail score.
The table exposes fragmented support for the capability model. A capability may
be a built-in feature in one harness, project code in another, and a platform
service in a third. Similar features use different names, scopes, state models,
and deployment paths. Developers must therefore reconstruct the application
model for each harness.
The boundary also differs. Goose, Claude Code, and OpenCode package a runnable
host with user surfaces. Deep Agents combines a Python harness with a documented
LangSmith deployment path. Vercel AI SDK offers TypeScript primitives and a
durable Workflow runtime, leaving the project to supply more of the application
structure.
This paper makes those differences visible and gives the community a shared
capability model. A harness moves toward becoming a
first-class Agent Application framework when it presents these capabilities as
a coherent system for structuring, developing, testing, deploying, and
operating an application. Consistency means shared concepts, explicit
ownership, and interoperable boundaries while each framework keeps its native
preferences, defaults, and use-case optimizations.
12.5 Plugins contribute components
An Agent Plugin packages reusable components for an Agent Project. An application can incorporate plugin-supplied instructions, tools, hooks, and client extensions into its program. Its state model, authority rules, tests, and operating lifecycle govern how those components are used. Agent Plugins 1.0 defines a portable directory with a rootplugin.json, Agent Skills under skills/, MCP server
configuration in mcp.json, and reverse-domain client extensions. The
specification stops at the package format. Frameworks and package managers can
supply registries and dependency resolution, including project dependency files
and transitive plugin dependencies. They can also define installation
permissions and supply-chain verification without changing the plugin format.
Part IV: State, change, and results
13. Application, release, instance, and session
A running Agent Application has four related lifetimes. The product continues across releases. Each release can create many instances, and each instance can run many sessions. The application is the product identity that a company offers and customers use. It continues while the publisher ships new releases. A release is a fixed, deployable version of the native project. Each framework and platform has its own release format. A production release records the source revision and resolved dependencies, along with the framework, harness, and model versions. It also records active components, requested authority, runtime requirements, evaluations, and migration rules so an operator can inspect and reproduce the deployment. Operators keep prior releases for inspection and rollback. A release records content digests as well as version labels. Semantic versioning cannot establish behavioral compatibility for a package that changes natural-language instructions. A plugin update therefore requires evaluation even when its publisher labels it a minor or patch release. An instance is the long-lived unit created from a release for one privacy domain, such as a user, team, customer account, project, or job. Its workspace, authority grants, history, and billing accumulate independently of other instances. The user or organization it represents remains responsible even when the instance acts for months. An operator upgrades an instance by updating its project files to a new release. If the instance edited a published natural-language instruction, that instruction is merged semantically. A session is one period of execution or interaction within an instance. A user, event, or schedule starts it. The session may last one turn or many and need not have a formal finished state. It uses the release and active local changes attached to the instance when the session starts.14. The durable workspace
Each instance has one persistent, isolated logical workspace. It includes every piece of durable state that the runtime agent can retrieve, even when the platform stores that state across several systems. A logical workspace need not be a single filesystem. A platform may keep structured state in a database and artifacts in object storage. It may also give each session an ephemeral filesystem, retain selected changes, and record which session produced them. Later sessions must be able to find, use, and update the retained state. The reference design gives each instance a persistent virtual computer: a filesystem, a shell, and network access, wrapped by the application’s policy code. Agents and their tools use ordinary file operations, scripts, and command-line programs on documents, code, local databases, installed packages, artifacts, and intermediate results. They can add new forms of state without a schema or a storage API for each kind of object. That environment is why a harness-based agent can do general work. A chat and a list of specialized tools can complete a narrow job. A loop that can read, write, and run code over a disk can take on work the application author did not enumerate in advance. As models get better at reasoning and following instructions, the harness should stay small: assemble context, call tools, load skills, and run the loop over that computer. The industry often adds more special-purpose tools and prompt-level partitions. Those can help a narrow product. They are a poor substitute for a computer when the job is open-ended. Manus Cloud Computer keeps a persistent filesystem, installed tools, and running processes. Grok Bot runs on a persistent cloud machine with a filesystem, terminal, and browser. Claude Managed Agents give Claude bash, file operations, and a persistent sandbox filesystem. Perplexity Computer is framed as a worker that uses a computer, including local files on Windows. These products differ in tenancy and product scope. They agree that the agent should operate over a computer rather than only a transcript and a tool list. The computer does not require a dedicated machine while the instance is idle. A platform can snapshot it, restore compute when work arrives, and suspend it afterward. At scale, the platform can store a shared base image and only the files each instance has changed. Appendix D describes the storage contract.14.1 What a workspace holds
Current working state changes in place, so its size usually reflects the application’s current work rather than its full history. It may include:- source material and working files;
- generated code and installed dependencies;
- local databases, indexes, and caches;
- created artifacts;
- downloaded and locally cached files;
- user-uploaded files;
- tool configuration and pending schedules.
- checkpoints and snapshots;
- run records;
- evaluation results;
- source and change history.
PLUGIN_ROOT holds
immutable release content for a plugin packaged with an application.
PLUGIN_DATA holds writable state in the instance workspace. A platform scopes
that data by application, instance, and plugin identity, then applies the
workspace’s isolation, retention, export, checkpoint, and deletion rules. A
team sharing one instance also shares its plugin data; separate instances never
share it. Secrets stay in the managed secret store rather than either root.
Plugin upgrades that change persistent data include migrations in the release
plan.
14.2 The workspace is the privacy boundary
The runtime agent has access to the whole workspace. Files, memory, indexes, summaries, and artifacts may enter its context or affect later work. Folder names and file permissions within a shared workspace do not create separate privacy domains. The boundary covers the logical workspace rather than one filesystem volume. It includes database rows, objects, session-bound files, and external records whenever the instance can retrieve them. The platform enforces privacy between workspaces. It isolates their storage and compute, controls where their contents can be sent, and restores or deletes one without touching another. Section 6.1 gives examples of where applications draw that boundary; section 19 covers the controls that enforce it.14.3 Instance identity and workspace state
The instance identifies the continuing agent: whom it represents, what it may do, and what it has done. The workspace holds the durable working state and computational environment that the agent uses. Separating them lets an operator access, move, or restore the workspace without changing the agent’s identity or permissions. It also keeps per-instance configuration outside the workspace and out of the runtime agent’s reach.14.4 Memory and workspace
A memory system selects facts or past interactions for the model’s context. Persisted memory belongs to the logical workspace whenever the instance can retrieve it. The memory may live in files, a database, or another service.15. How instances change after deployment
A shared application changes when its publisher ships a release. An instance can also change between releases. It may learn facts, accumulate files, adopt user preferences, or receive new instructions. Some applications let the runtime agent write a skill or generate code for later use. These local changes cause instances in the same fleet to diverge. If they add or edit natural-language instructions, they diverge in program as well as state. Operators then manage a fleet whose members no longer share one program: rollout, audit, and policy have to follow each instance’s local program and state, not only the shared release. The platform tracks the shared release separately from the changes made inside each instance. For every local change, it records the author, tests, approval rule, and rollback method.15.1 Who can author a change
Authorship does not confer the right to activate a change. An agent may draft a
skill that requires a person’s approval. The application may activate a
low-risk change automatically after its tests pass, according to a policy set
in advance.
15.2 Risk depends on the change
Adding a customer document changes what the agent knows. Editing a skill changes how it behaves. Installing a plugin can alter behavior, available capabilities, or program structure. Granting a credential expands what the installed components can access. The review process should reflect these differences. Installation, activation, and authorization remain separate decisions. A plugin cannot authorize itself, and installing it does not approve future updates. A behavioral diff must include instructions, descriptions, tool schemas, hooks, and other declarations as well as executable files. The source of a change also affects its risk. A support ticket or web page may contain instructions written by an attacker. If an agent turns that material into a skill or tool, reviewers must treat the resulting program as influenced by an untrusted source. An agent cannot grant itself more authority. Only the person or organization that controls a resource can approve a new credential, spending limit, or network destination. Appendix D classifies these changes in more detail.15.3 Keep instance changes local
Changes created inside an instance stay with that instance. They cannot update the shared Agent Project or publisher release. An instance may report that a new procedure worked well. A developer can use that evidence to author and test a release through the publisher’s release process. The platform quarantines changes influenced by untrusted material until a trusted reviewer clears them. It also stores change history where the agent cannot edit it. This prevents a compromised instance from changing the rest of the fleet. If policy lets a runtime agent install a plugin, the platform treats the result as an instance-local change to the program. It records the package and activation in lineage and evaluates the change in isolation. Promotion to a publisher release still requires the release process and trusted review, especially when the plugin came from untrusted content.15.4 Recording instance lineage
Version control records changes to the shared application. Instance lineage records local history after creation:- originating release and installed upgrades;
- active local filesystem overlays;
- generated code;
- installed plugins, exact package digests, and active components;
- the author and source of each change;
- tests and approvals;
- artifact history;
- tool and permission changes;
- forks, merges, and rollback points.
15.5 Merge edited published instructions semantically
Copy or a line-based three-way merge is enough for ordinary code, configuration, and files the instance did not edit. Natural-language instructions are different. One instruction can change the effect of another, including instructions in different files. A text merge finds edits to the same lines. It cannot tell whether two instructions agree. Semantic merge is required when the instance edited a published natural-language instruction. A later release of that instruction cannot be applied by replacing the file or by merging lines. The platform applies the publisher’s intended behavior, preserves unrelated local changes, and tests the result against the instance’s workspace. If the instance only added local instructions and left the published files alone, the platform can copy the new published files. It still has to evaluate the result. Local instructions can collide with the new published ones. Suppose a publisher raises the threshold for escalating a support case. One customer’s instance has also learned to “handle routine cases without escalating.” Copying the new published file succeeds as a text operation. The combined behavior can still be wrong. A three-way merge of an edited published instruction can likewise accept two sentences that contradict, or report a conflict between two paraphrases of the same rule. If an upgrade test fails, the platform blocks that instance’s upgrade and creates a review task for the fleet manager.15.6 Evaluate releases against instance state
A shared release can pass every test and still fail for one instance whose workspace contains unusual history. The platform first tests the release on standard examples, then tests the upgrade against affected instances or representative checkpoints. Releases remain fixed and inspectable. When behavior changes, an operator can compare the release, runtime, policy, and workspace against a stable reference. Appendix D states this model more formally.16. Artifacts and other durable results
An Agent Application may produce a report, a working codebase, an updated customer record, or a process that it continues to maintain. These results persist independently of the conversation that produced them. Durable results fall into four groups:
An Agent Artifact is a portable, versioned, access-controlled work product.
The platform records its creator, current version, source lineage, and access
rules.
An artifact may be:
- a file, such as a document, spreadsheet, or Markdown file, that a user can open on their computer; or
- a hosted work product, such as an interactive report, website, or Agent Application, that needs a suitable runtime.
16.1 Message versus artifact
A message belongs to the conversation timeline and is usually append-only. An artifact has a separate identity and lifecycle. A user can open it, revise it, and compare versions without replaying the conversation that produced it.16.2 Surfaces
Interactive Agent Applications usually expose the agent widget described in section 7. It presents conversation, session history, artifacts, approvals, and generated UI in one interface for an instance. An application may also have a dedicated artifact editor, workspace browser, approval queue, or operations view for runs, cost, errors, and schedules. APIs connect the application to other products. Email, messaging, and ticketing systems deliver work through channels that people already use. Each surface operates on the same instance and durable state.Part V: Operating Agent Applications
17. Instance execution
17.1 Persistence without resident compute
An instance can suspend compute while preserving its identity, workspace, schedules, and pending work. Suspension stores the instance’s state without keeping a process running. Section 18 describes the corresponding active and suspended instance states.17.2 Event-driven operation
An instance often works without a user present. It can wake in response to:- a user request;
- an uploaded file;
- an inbound message or ticket;
- a business-system event;
- a schedule;
- an approval;
- a change to an artifact;
- another application.
17.3 Checkpointed long-running work
Work that runs for hours or months must recover from interruptions, mistakes, and partial failure. It requires:- checkpoints;
- pause and resume;
- safe retries that do not repeat a charge, email, or database update;
- timeouts and cancellation;
- a way to repair or offset partially completed actions;
- resource and cost limits;
- escalation;
- clear terminal states.
17.4 Multi-agent structure
An instance may contain one principal agent with several subagents, or a set of peers. Agents inside the same instance share its identity, workspace, and authority, so the instance remains the unit of accountability. A plugin can contribute a subagent definition, but the subagent runs under the application’s instance and delegated limits. An A2A peer is independently addressable and may have its own workspace, identity, and authority boundary. Section 22 identifies coordination across separate instances as an open problem.17.5 Human authority and approval
Approval rules should reflect how hard an action is to undo. Editing a draft is reversible. Refunding a charge may require a second transaction. Sending a private document to the wrong person may be irreversible. For each action, the policy specifies whether the agent may act silently, act and report, ask first, or never act. An approval lets a reviewer stop irreversible work before it occurs. Manual review becomes less reliable at high volume because a reviewer handling fifty items an hour may start to rubber-stamp them. Code and policy systems must enforce hard limits, as section 19.3 describes.18. The Agent Application Platform
An Agent Application Platform turns a tested Agent Project into an immutable release and operates long-lived instances with durable workspaces, identity management, security controls, governance, observability, evaluation, and fleet management. It provisions instances at the application’s privacy boundary, attaches scoped credentials, and runs their sessions. A store or publisher may provide distribution and commercial services separately. Ordinary cloud infrastructure supplies compute, storage, networking, and databases. An Agent Cloud adds infrastructure designed for persistent agents: durable workspaces, resumable execution, sandboxed tools, model access, event streams, checkpoints, and per-instance metering. An Agent Application Platform may build on that specialized infrastructure, provide it directly, or assemble the same capabilities from general cloud services. Above this infrastructure, the platform manages the application lifecycle and the services used by developers and publishers. An Agent Application Platform provides these shared lifecycle services:
Amazon Bedrock AgentCore, Vercel Eve, and Pickaxe each cover part of this list in their public documentation:
For a fleet, the platform keeps local changes separate from the shared release.
It records each instance’s lineage, tests local changes, applies upgrades in
stages, and supports rollback.
An instance moves through four lifecycle states:
Figure 6. Instance execution and lifecycle states.
19. Security, reliability, and governance
An Agent Application reads untrusted content, executes code, holds credentials, accumulates private material, and acts over long periods under delegated authority. A malicious instruction can arrive through a web page, email, document, support ticket, tool result, or old workspace file. The controls below limit what compromised or mistaken behavior can affect. Figure 7. Trust and authority boundaries.19.1 The agent cannot choose its own authority
The developer declares the permissions the application may need. The user, organization, or resource owner decides what to grant. The agent can use that authority but cannot expand it. Permissions can expire or be revoked while the instance is suspended or running. The platform must also use a narrow execution identity so an agent cannot inherit broader platform access. Commerce policies grant search, negotiation, ordering, and payment authority separately. A commercial grant can limit the merchant, what may be bought, maximum price, time window, payment instrument, and confirmation rules. Commerce and payment protocols can carry intent, checkout state, authorization, payment requirements, and receipts. Policy code enforces the limits and handles revocation. Appendix D.4 lists the current protocols.19.2 Review the complete plugin
A plugin affects executable software and model behavior. Review and approve its complete content digest: executable code, natural-language instructions, component descriptions, tool schemas, declarations, hooks, and client extensions. A skill can steer an existing tool in a new way even when the plugin adds no capability. Hooks require extra scrutiny because they can run at lifecycle points without model selection. A production release keeps a component inventory analogous to a software bill of materials. For each plugin it records the source, version, digest, exported components, executable files, requested capabilities, network destinations, and active host extensions. Credentials remain governed references scoped to an instance. Neither a plugin nor one of its components can grant itself access. An update shows behavioral and capability changes along with file changes. The platform reruns affected evaluations before activation and keeps the previous resolved graph available for rollback.19.3 Put hard limits in code
Policy code the agent cannot change authorizes each action the model proposes. Keep these controls outside program material the agent can edit:- authentication and agent-instance identity;
- permission checks on the exact record or resource being read or changed;
- tenant and workspace isolation;
- secret delivery;
- spending and rate limits;
- approval gates;
- allowed network destinations;
- artifact sharing;
- retention and deletion.
crm.write is too broad by itself. The system that controls
the resource must also check which customer account the agent is changing. A
record-level check prevents a compromised or misled agent from reaching another
account or sending private files to an unapproved server.
Reads need the same control. A database, document connector, search index, or RAG
service must enforce access before returning data to the agent. When that
connector is an MCP server, much of this enforcement belongs in its
authentication and authorization path. For user-initiated work, the safe default
is the intersection of the instance’s delegated authority and the authenticated
user’s permissions. Loading a broad collection into the model’s context and
asking the model to hide unauthorized records defeats this boundary.
Credentials should be short-lived and limited to the current action whenever
possible.
19.4 Preserve source labels
The runtime distinguishes developer instructions, organization policy, user directions, reference material, and outside content. It keeps those source labels when text is summarized, passed to a subagent, or saved and read later. Reading an untrusted document may narrow what the current run is allowed to do or trigger an approval requirement. Prompt injection remains possible, so policy uses source labels to limit what a misled agent can reach. Instance and workspace isolation provide the outer boundary. Users with different data rights need separate workspaces, and scoped tools limit what the agent can reach outside its workspace. Appendix D describes this mechanism in more detail.19.5 Agent-generated code
During a run, the agent may write a script, execute it, inspect the output, and use the result to continue working. It may save that script at a known path in its workspace so later sessions can run or revise it. The runtime applies the instance’s network, resource, and permission limits to this code. Saving the script makes it part of the instance’s local program state. It does not change the shared application release. If the publisher wants every instance to receive the script, a developer reviews and tests it before adding it to a new release.19.6 Evidence and recovery
An audit record identifies the agent, its authority, the sources it used, the tools it called, and what changed. It must be understandable to someone who was not present during the run. Keep this compact record for as long as the result matters. Store detailed model inputs and outputs for a shorter period unless the use case or law requires more; they are large and often contain sensitive data. Before a consequential action, keep a workspace checkpoint and record any outside systems the agent will change. A checkpoint can restore files but cannot recall an email or a disclosed secret. For each outside action, the application must record how it can be reversed, offset, or reported. Appendix D covers replay and recovery techniques; Appendix B records one current legal retention example.20. Standards, contracts, and portability
Standards cover specific boundaries in the stack: tools, reusable instructions, component packages, agent events, communication between independent agents, and commerce. Section 12.3 and Appendix D.4 map these protocols in more detail. A standard is useful when independent implementations need to exchange information or commands. Frameworks can keep their own approaches to local development, evaluation, and deployment. Cloud platforms can likewise choose how they provide workspaces, identity, scheduling, fleet operations, and cost controls. Agent Projects and releases remain framework-native because current frameworks use different structures. A project written for Claude Agent SDK, Google ADK, LangGraph, OpenAI Agents SDK, or Vercel AI SDK keeps that framework’s source layout, build process, and release mechanism. At these boundaries, a frontend can talk to several agent backends through AG-UI, and a tool can serve several hosts through MCP. An Agent Skill or Agent Plugin can move between compatible clients. Independently deployed agents can collaborate through A2A. Future contracts may cover artifacts, workspace exports, lineage, delegated authority, and billing records because users and operators may need to move them between platforms. Work on a contract should begin with two independent implementations and a specific exchange problem. The contract stays at the exchange boundary while internal design remains framework-specific.21. Agent Application Stores
An Agent Application Store, or Agent App Store, distributes Agent Applications much as a mobile app store distributes mobile applications. Publishers can offer a one-time purchase, a subscription, or in-app purchases. Commercial LLM inference is commonly metered by token, so many applications incur a cost each time the agent runs. A one-time purchase can continue to incur token charges for years, and a subscription must account for customers whose inference use varies widely. Long-lived instances also retain workspaces and schedules between runs.
The platform observes model use, while the store owns the purchase and
entitlement record. They need a shared usage and billing boundary even when one
provider operates both services. In-app purchases can add usage credits or move
the customer to a plan with a larger allowance.
Part VI: Open questions and conclusion
22. Open questions
The category will change as implementations take on work that lasts longer and carries more responsibility. The questions below mark places where the current model may need to grow. Implementation experience and counterexamples are especially useful, including from attempts to build agents that run large businesses or conduct frontier research.22.1 How should related workspaces share context?
Privacy gives the first rule: information that must remain separate belongs in separate instances. That split can scatter useful context. A customer’s tickets may live in several workspaces, and each ticket may also relate to a user, account, and product. The industry still needs controlled ways to read across those boundaries without copying private data or losing the source, permissions, and retention rules of each fact.22.2 How do we test and merge natural-language programs?
Two instructions can conflict even when they sit in different files. Copy and line-based merge are enough when published instructions were not edited in the instance, but the platform still has to test that local instructions do not collide with the new release. When published instructions were edited, platforms need a semantic merge and affordable tests that compare intended behavior before and after the change, first for the release and then for affected instances.22.3 How do we migrate years of accumulated state?
Databases have schemas and conversion scripts. Workspaces also contain notes, generated code, installed packages, and local conventions. Some of that material can only be updated by an agent that reads and interprets it, which makes migration slower and less predictable.22.4 How much may an agent improve itself?
A platform needs clear limits on which instructions, skills, tools, or subagents an instance may create and activate. It also needs a way to learn from many instances without exposing one customer’s data to another.22.5 How should trust survive summarization?
A hostile instruction can be copied into a summary, passed to another agent, or saved for months. The source and trust level must survive those transformations.22.6 What is the smallest useful portability contract?
Customers need to move workspaces, artifacts, lineage, and authority records. A shared format must carry enough information to resume work without forcing every application into the same internal design.22.7 How should long-lived instances be priced?
Operators need to connect model, tool, compute, storage, and review costs to an instance or business result. They also need policies for dormant instances that still occupy storage and retain schedules.22.8 How do identity, revocation, and deletion work over years?
An agent may outlive the employee who created it. Revoking a grant must reach suspended instances and future runs. Audit-retention rules may also conflict with a customer’s request to delete personal data.22.9 Who will own the Agent Application framework layer?
Harness developers may expand into it, while model providers and Agent Application Platforms may absorb other parts. The lifecycle problems remain because the instance and its work still outlive any one model call.23. Conclusion
This architecture gives readers a way to reason about the complete AI agent system surrounding its model calls and agent loops. Start with the application’s job and privacy boundary. Map its behavior across code, natural-language programs, declarations, knowledge, tools, workflows, and policy. Then assign the responsibilities for releases, instances, workspaces, authority, surfaces, operations, and recovery. Persistence is the architectural break from request-oriented AI software. An instance returns to the same work across sessions and accumulates context, artifacts, unfinished work, instructions, and generated code. A new release can therefore improve the shared application while failing against the state of one instance. Release evaluation against instance state, staged upgrades, lineage, checkpoints, and targeted repair address that condition. If the instance edited a published natural-language instruction, the upgrade merges that instruction semantically. Agent Application frameworks structure and test the project. Agent Application Platforms turn releases into long-lived instances and operate their workspaces, authority, interfaces, and fleets. An Agent Application Store handles discovery, acquisition, installation, and commercial exchange. Products can combine these roles, but keeping their responsibilities distinct makes architectures and vendor claims easier to compare. MCP, Agent Skills, Agent Plugins, AG-UI, A2A, and commerce protocols already cover several boundaries. Other contracts may emerge where independent systems need to exchange artifacts, workspace exports, lineage, identity, authority, or billing records. The internal project and release model can remain native to each framework. Teams can use this map to reason about the complete system, decide who owns each responsibility, compare implementations, and see which boundaries need to interoperate.Acknowledgments
This paper stands on the shoulders of giants. Researchers, engineers, standards contributors, and product builders created the language models, agent harnesses, protocols such as MCP, formats such as Agent Skills, execution environments, and other core building blocks on which Agent Applications depend. They also explored the space of possible agent architectures through research, open-source projects, and products. Their work gave this paper’s authors a rich surface from which to carve out a reference architecture. We thank Kalyan Basu for his guidance, and especially for recognizing that the paper’s central contribution is a reference architecture. That observation clarified the paper’s purpose and what it offers its readers.Appendix A: An illustrative project layout
This example maps section 12.2 onto one possible layout. It is not a portable package format. A framework may use different filenames, keep several parts in one module, or store operational configuration outside the repository.AGENTS.md; a Claude Code project might use
CLAUDE.md. The skills/ directories use the Agent Skills format. Tools and
workflows use framework-native TypeScript. mcp.json is one way to declare
connectors. The policy files explain data-access and report-sharing rules to
developers and the agent; enforceable limits still live in computer-code tools
and platform configuration. Knowledge, artifact definitions, triggers, and
migrations are extra parts a larger application may include.
Another framework might define agents in YAML, register tools with decorators,
or keep evaluations in a hosted service. The filenames would differ, but the
same parts would still exist somewhere in the project or platform.
Appendix B: Dated evidence
This appendix records evidence that may change over time. It is current as of August 9, 2026. If an entry becomes stale, recheck the cited example; the main argument should not depend on that example remaining current. Web and mobile application comparison. Common descriptions define a web application by its browser runtime and web delivery, then explain its client-server architecture, capabilities, and distribution. The AWS, GeeksforGeeks, and HubSpot explainers follow that structure. Definitions of a mobile application begin with software designed for a mobile device, then cover operating-system integration, device capabilities, installation, and app-store distribution. The AWS mobile development and TechTarget mobile app descriptions use the same frame. Section 2 applies it to Agent Applications while adding the change in operator and the lifecycle of a persistent instance. Idle cost of a resident session. A leading managed agent runtime bills memory for the whole session lifetime and CPU only on actual consumption, per second, with a minimum billed memory allocation and a maximum session lifetime of eight hours. Under that model an idle but resident session accrues the memory term alone, on the order of $14 per instance-month at a small allocation and list prices. Keeping a shared base image plus a few hundred megabytes of writable delta and metadata per instance in object storage is on the order of $0.02 to $0.30 per instance-month. The ratio, roughly two to three orders of magnitude, supports the active and suspended instance distinction in section 18. The dollar figures are estimates under stated assumptions and will change. The storage model follows the same basic layout documented by Docker: read-only image layers shared across containers, with each container’s changes written to its own copy-on-write layer. Linux OverlayFS exposes these as lower and upper directories. Background execution. The same billing model charges CPU only while CPU is consumed, so a background process converts an idle session into a consuming one. This is the cost consequence of background work described in section 17.2. Regulatory retention. The European Union (EU) AI Act sets a six-month floor on retention of automatically generated logs for high-risk systems, binding providers under Article 19 and deployers under Article 26(6). The timeline for Annex III high-risk obligations is in legislative motion. Most examples in this paper are not high-risk systems. Vercel Eve. Vercel announced Eve on June 17, 2026 as an open-source, filesystem-first TypeScript framework for durable agents. Its agent directory packages instructions, skills, tools, subagents, channels, and schedules. The runtime supplies checkpointed durable sessions, sandboxed compute, approval gates, evaluations, tracing, and channel adapters. Section 4 uses Agent Application framework as this paper’s category label for that combination. Agent Plugins. Agent Plugins 1.0.0 defines an open, vendor-neutral package with a rootplugin.json, Agent Skills in skills/, MCP server
configuration in mcp.json, and reverse-domain client extensions. It also
defines PLUGIN_ROOT for installed package content and PLUGIN_DATA for
client-managed writable state that persists across updates. The project’s
initial steering committee includes maintainers from Amazon, Cursor, Microsoft,
OpenAI, and Vercel. Its future-considerations
document
leaves permissions, provenance, secrets, enterprise controls, audit events,
dependency resolution, and testing outside version 1.0.0. Codex CLI
0.147.0 added portable Agent
Plugin installation and catalog search on August 7, 2026.
The portable standard is smaller than the current host formats. OpenAI
plugins use a
.codex-plugin/plugin.json manifest and may add skills, MCP connections,
assets, and lifecycle hooks. OpenAI asks users to review and trust plugin hooks
before enabling them. Claude Code
plugins may include skills, agents,
hooks, MCP servers, LSP servers, monitors, binaries, and default settings. The
paper uses these formats as implementation evidence rather than category
requirements.
Agent commerce and payment protocols. Coinbase announced
x402 on May
6, 2025. Google announced the Agent Payments Protocol
(AP2)
on September 16, 2025. OpenAI and Stripe announced the Agentic Commerce
Protocol on September 29, 2025.
Google published the Universal Commerce
Protocol
on January 11, 2026. On April 28, 2026, Google announced that it was
donating AP2 to the FIDO
Alliance,
and FIDO announced new agentic authentication and payments standards
work.
Section 19.1 places commerce and payments at the delegated-authority boundary;
Appendix D.4 maps the current protocols to their narrower roles.
General-purpose Agent Applications. ChatGPT
Work
works across connected apps and files, produces finished documents and sites,
and supports scheduled or triggered work. ChatGPT
Projects
retain project files, instructions, chats, and memory. Claude Cowork
Projects
have project-scoped files, instructions, memory, and scheduled tasks; live
artifacts
persist independently of their creating chat and keep version history. Gemini
Notebooks retain sources,
instructions, and ongoing discussions, while Gemini
Spark manages continuing
tasks, tools, and schedules.
Embedded and channel-based agents. Microsoft 365 Copilot
appears inside Word, Excel, Outlook, and Teams. Canva AI
embeds agentic creation, persistent memory, and scheduled campaign work inside
its design and marketing system. Intercom Fin
operates across web and mobile messengers, email, phone, WhatsApp, SMS, social
channels, and Slack. OpenClaw routes personal
agents through Telegram, WhatsApp, and other messaging services.
Agent widgets. OpenAI ChatKit
combines authentication, thread and message management, attachments, tool and
reasoning visualization, and interactive widgets. CopilotKit
provides chat, persistent threads, tool-call rendering, human approvals, and
generated UI. AI SDK Elements
provides components for the composer, model selection, attachments,
conversation, reasoning, sources, and tools. AG-UI
standardizes the typed event stream between an agent and a user-facing
application. MCP Apps
lets tools return sandboxed interactive views that render inside compatible
conversation hosts.
Project-building Agent Applications. Lovable Agent
mode reads and changes a persistent
project codebase, while project and workspace knowledge provide instructions
across conversations. Replit Agent
checkpoints
preserve project files, installed packages, configuration, agent memory,
conversation context, and connected databases. Claude
Code,
Codex, and GitHub Copilot’s
cloud agent
show other coding-agent forms, including terminal, desktop, issue, pull-request,
and scheduled operation.
Personal, vertical, and persistent-computer applications. OpenClaw’s agent
workspace holds agent files
and private memory, while its scheduler persists recurring jobs. Lightfield
builds versioned customer context and runs CRM agents in chat or through
automations. Manus Cloud
Computer
keeps files, installed tools, and running processes across sessions.
Grok Bot documents a persistent cloud
VM with a filesystem, terminal, and browser. Claude Managed
Agents document
bash, file operations, and a persistent sandbox filesystem. Perplexity
Computer
describes a general-purpose worker that uses a computer, and Personal
Computer for Windows
works across local files. Section 14 uses these as evidence for a computer
as the agent’s working environment, not as a required product shape. These
products organize the continuing instance around a person, a business
workspace, or a computer rather than a software project.
Frameworks and sandboxes. The OpenAI Agents SDK
provides an agent loop, tools, handoffs, guardrails, sessions, tracing, and
sandbox agents. LangGraph
provides durable orchestration for long-running stateful agents. E2B
and Vercel Sandbox provide isolated Linux
environments for agent-run code. These are the named examples behind section 4.
Partial Agent Application Platforms. The Amazon Bedrock AgentCore
overview and
runtime guide
document its managed harness, runtime, memory, identity, tools, evaluation, and
observability services, while distinguishing ephemeral session files from
long-term memory. The Vercel Eve
announcement documents its framework,
durable workflows, sandboxes, approvals, subagents, evaluations, and deployment
model. Pickaxe’s feature page and monetization
guide document its builder, distribution
channels, portals, user controls, memory, and payment models. Section 18 compares
their documented coverage, not product quality.
Builder workflow and native harness layouts. The Claude Code
overview, skills
documentation, subagent
documentation, hooks
reference, and MCP
documentation establish the project files
reflected in Appendix A’s illustrative layout.
Harness capability snapshot. Section 12.4 compares Goose, Claude Code, Deep
Agents, OpenCode, and Vercel AI SDK. Every entry links to the relevant
first-party documentation.
Prior art on the name. Ge et al., “LLM as OS, Agents as Apps: Envisioning
AIOS, Agents and the AIOS-Agent Ecosystem,” arXiv:2312.03815, December 2023,
which coins “Agent Applications (Agents, or AAPs).”
Natural-language instruction formats. OpenAI’s description of the Codex
agent loop explains
how it loads hierarchical AGENTS.md files. The Claude Code
overview describes CLAUDE.md, and
its subagent documentation
describes Markdown definitions containing a specialist’s prompt, tools, and
permissions. The Gemini CLI context-file
documentation
describes the equivalent GEMINI.md hierarchy. The Agent Skills
specification defines reusable
SKILL.md instructions with optional scripts, references, and assets. OpenAI’s
GPT-5 developer release
provides one published example of gains in instruction following and long chains
of tool calls across model generations.
Natural-language programming prior art. Dijkstra, “On the foolishness of
natural language programming,” EWD667, 1978.
Named systems and formats. Claims about named systems in sections 1, 4, 6,
7, 9, 11, 12, 14, 18, 19, and 20, as well as Appendix D, come from each vendor’s own
documentation as of August 9, 2026 and should be rechecked before citation.
Appendix C: Companion documents
Section 12 of this paper contains the Agent Application capability model. The
short public argument is the site overview.
The documents in the table remain planned. A proposed contract becomes a
candidate for a specification when independent implementations need to
exchange the same information across a stable boundary. The current status of
these documents is maintained at
agentapplication.io/companion-documents.
Appendix D: Technical notes
This appendix holds implementation detail that is useful to platform builders but not required to understand the application model.D.1 Runtime behavior and compatibility
An instance’s behavior depends on several inputs:release input includes the
resolved dependency graph and active components, so the equation does not need a
separate plugin term. Compatibility means that the required features exist. It
does not mean that two runtimes will produce identical behavior.
D.2 Change classes and semantic upgrades
The platform can classify local changes by what they affect and who may activate them.
Risk rises when a change is derived from untrusted material or can reach more
resources. Approval binds the exact tool definition, including its code,
description, and input schema. Editing any of those parts requires a new review.
A plugin installation can span several rows. The platform classifies the
components it activates rather than assigning one risk class to the package.
Installing content is a local program change; activation changes the running
application, and authorization changes what it may reach. The lineage record
keeps those events separate.
Copy and line-based merge are enough for ordinary code, configuration, and
files the instance did not edit. When an instance has edited a published
natural-language instruction, a semantic upgrade has three steps: identify the
behavior the publisher intended to change, apply that change while preserving
unrelated local behavior, and run evaluations against the instance’s own
checkpoint. If the instance only added local instructions, copy the new
published files, then evaluate for collisions with the local program. Text
diffs remain useful for review, but they cannot decide whether two
natural-language instructions agree.
D.3 Cost model
The full cost can be written as:D.4 Existing formats and protocols
Several current formats cover part of this architecture:
No widely adopted format carries the complete framework-native agent project,
resolved dependency graph, workspace requirements, behavior tests, identity and
authority record, communication events, artifacts, and instance lineage
together. A single format for all of them would still need evidence from
independent implementations. New contracts should address the specific
boundaries where those implementations need to interoperate.
D.5 Authority and source tracking
The authority available to one step is the intersection of four limits:D.6 Replay and recovery
Three operations answer different questions:- Record replay runs deterministic application code against stored model outputs to establish what happened.
- Re-execution runs the same release and checkpoint with fresh model calls. The result may differ.
- A counterfactual run changes one input, such as removing a document, to test whether that input caused the behavior.