Part 7

Resource model mapping

This page maps each resource you applied in the two labs to its nearest counterpart in the other project, grouped by what the resource is for.

After this page you can:

  • Match each ax resource from the ax lab to its nearest kagent resource from the kagent lab.
  • Identify the kagent resources that have no ax equivalent, and why.
  • Explain how each project scopes resources for tenancy.

Two APIs that partly overlap

ax resources use the API version ax.io/v1alpha1 and are stored by ax-server, not by Kubernetes.42 kagent resources use api.kagent.dev/v1alpha3 and are Kubernetes custom resources.9 The kagent architecture doc lists Agent, Harness, AgentTemplate, and SandboxTemplate as Kubernetes resources, alongside models, prompts, and remote MCP servers.9

In the tables below, "No equivalent" means the project has no resource for that concern. Rows marked Biggest difference are the ones that most change how you would design a system on each project.

Figure: ax has three resources that all feed one Task, while kagent splits behaviour, runtime, and binding into separate resources and creates Sessions outside Kubernetes.

Defining the work

Definition resources: what runs and how it is described
Concernaxkagent
Unit of execution Biggest differenceax: Task, which declares image, command, environment, resources, and workspaces. Tasks are immutable once created.32kagent: Session, created from an Agent. It pins one prepared revision and names one Substrate Actor. It is not a Kubernetes resource.10
Agent behaviourax: No equivalent. The agent lives in your image, and ax does not model it.3kagent: AgentTemplate, which holds model, prompt, tools, skills, and plugins.9
Runtime choiceax: Task.spec.image, or a custom image that embeds the runner package.42kagent: Harness, which holds the runtime implementation, workload, credentials, capacity, and snapshot policy.9
Binding behaviour to a runtime Biggest differenceax: No equivalent.kagent: Agent, which names exactly one template (inline or templateRef) and exactly one Harness (inline or harnessRef).9

In the ax lab you wrote one Task that named an image and a command. In the kagent lab you wrote a Harness and an AgentTemplate, then an Agent that pairs them. kagent compiles that pairing into an immutable revision before any Session can use it.9

Environment, models, and tools

Environment resources: what the agent can see and call
Concernaxkagent
Prepared environmentax: Workspace, which declares Git repositories, files, MCP servers and registries, skill registries, and an optional goal.43kagent: SandboxTemplate, for standalone sandboxes only: tools image, environment, and preparation policy.9 An agent's own runtime state lives in /data.10
Model configurationax: Model, which holds provider, model identifier, parameters, and a Secret reference.4kagent: ModelConfig, which configures one model from one provider.22
Provider connectionax: No equivalent. Provider details sit on each Model.4kagent: ModelProviderConfig, which holds a provider type, an optional endpoint, and a secretRef (not needed for Ollama). Its status lists the models discovered at that provider.29
Tool serversax: inline in Workspace.spec.mcp, as static endpoints or registry queries.4kagent: RemoteMCPServer resources, which can be shared across agents.8

Both projects keep credentials in a Kubernetes Secret that a model resource references. The Interfaces page covers providers and credentials in detail.

Tenancy and restart boundaries

Scoping and restart resources
Concernaxkagent
Tenancy scopeax: an atespace, set in metadata.atespace. ax uses an atespace named default when none is set.3kagent: the Kubernetes namespace. Agent references resolve only within the Agent's namespace.23
Restart boundaryax: SuspendTask checkpoints actor state and pauses the Task, and ResumeTask resumes it.2 Forking is a roadmap item.6kagent: a named checkpoint, stored in PostgreSQL with a Substrate snapshot tag. A checkpoint can be forked into a new Session.9

An atespace is a Substrate tenancy unit, separate from Kubernetes namespaces. ax uses metadata.name and metadata.atespace as Substrate resource names, so both must be lowercase RFC 1123 labels.4 See the Glossary for atespace, Actor, and revision.