Skip to main content

agent-up.json Reference

This page documents the JSON contract for agent-up.json.

Property names are shown in the JSON form Agent-Up examples use. Existing configurations that omit newly added optional properties remain valid.

Root Object

PropertyTypeRequiredDefaultDescription
namestringYesnoneHuman-readable project name shown for the workspace.
displayDisplayNoderived workspace visualsOptional Desktop-only workspace list label overrides.
applicationsarray of ApplicationNo[]Legacy local process applications launched directly from executable-plus-arguments commands.
servicesarray of Docker ServiceNo[]Legacy Docker service definitions.
dotnetarray of .NET ApplicationNo[].NET applications launched through the Agent-Up .NET capability.
dockerarray of Docker CapabilityNo[]Docker containers launched through the Agent-Up Docker capability.
promptsPromptsNodefault Agent-Up guidanceOptional repository-specific guidance for AI agents.
commitsCommitsNono build/test enforcementOptional build and test commands the commit queue resolves and attaches to queued entries.

Display Object

Used at the root to make Desktop workspace list entries more expressive. These values only affect Desktop visuals; repository path, worktree path, Git branch detection, commit identity, audit identity, and process working directories still come from the real workspace.

PropertyTypeRequiredDefaultDescription
namestringNoroot nameWorkspace list title override.
branchstringNodetected Git branch or not on a git branchWorkspace list subtitle override.

Prompts Object

Used at the root to refine default AI-agent behavior for this repository.

PropertyTypeRequiredDefaultDescription
commitPolicystringNoAgent-Up default commit policyRepository-specific commit guidance. Agents should use it when choosing commit prefixes, scopes, and queue grouping.

Default commit policy: scope commit messages to the queued slice; use feat for user-facing additions, fix for user-facing fixes, test for test-only or smoke-validation changes, refactor for no-behavior source changes, chore for maintenance, packaging, CI, or tooling with no customer runtime effect, style for CSS/HTML-only changes, and docs for documentation-only changes.

Commits Object

Used at the root to declare build and test commands the local commit queue (agentup commits enqueue and the equivalent Server MCP enqueue_commit tool) resolves for a queued entry's changed files. When present, resolved commands are merged into the entry's tests, alongside anything passed explicitly with --tests. Omitting commits, or any of its properties, keeps the previous behavior: no commands are resolved automatically.

PropertyTypeRequiredDefaultDescription
buildarray of stringsNo[]General commands that apply to every queued entry, such as building the solution.
testarray of stringsNo[]General test commands that apply to every queued entry, such as an architecture test suite.
projectsobject of Commits ProjectNo{}Per-project test commands, keyed by the top-level project directory a changed file falls under (the first path segment).

Commits Project Object

Used as values in commits.projects, keyed by project directory name.

PropertyTypeRequiredDefaultDescription
testarray of stringsNo[]Test commands for this project. Resolved for a queued entry whenever one of its files falls under this project, or under a project that depends on it (see dependsOn).
dependsOnarray of stringsNo[]Other project keys this project depends on. Used to find transitive dependents: when a dependency's files change, this project's test commands are resolved too, and so on transitively.

Example:

{
"commits": {
"build": ["dotnet build agent-up.sln"],
"test": ["dotnet test AgentUp.Architecture.Tests"],
"projects": {
"AgentUp.CommitPolicy": {
"test": ["dotnet test AgentUp.CommitPolicy.Tests"]
},
"AgentUp.Server": {
"test": ["dotnet test AgentUp.Server.Tests"],
"dependsOn": ["AgentUp.CommitPolicy"]
},
"AgentUp.Mobile": {
"test": []
}
}
}
}

With this configuration, an entry touching only AgentUp.CommitPolicy/... files resolves the general build and test commands plus AgentUp.CommitPolicy's own tests and AgentUp.Server's tests, because AgentUp.Server depends on AgentUp.CommitPolicy. An entry touching only documentation files resolves just the general build and test commands. AgentUp.Mobile is declared with no test commands yet, ready for a test command to be added once mobile tests exist, without any change to the resolution logic.

Application Object

Used in applications.

PropertyTypeRequiredDefaultDescription
namestringYesnoneApplication display name. Names are used in application lists and start/stop/restart operations.
commandstringYesnoneExecutable-plus-arguments command used to start the application. Agent-Up launches it directly from the configured path, rejects shell expressions, and requires the first token to be an allowlisted executable name such as node, npm, dotnet, python, cargo, go, java, make, mvn, gradle, bun, pnpm, or yarn.
installstring or nullNononeExecutable-plus-arguments command run to completion in the same path, before every start of command — subject to the same executable allowlist and shell-expression rejection as command. Runs unconditionally on every agent-up start (and every restart), so it must be safe to re-run, like npm install, dotnet restore, or pip install -r requirements.txt; the Server does not track whether it "already ran". Output is streamed to the application console prefixed with [install]. A non-zero exit fails the start and the application is not launched.
pathstring or nullNoworkspace rootWorking directory for the command, relative to the workspace root. Use null or omit it to run from the workspace root.
portsarray of PortNo[]Port declarations owned and allocated by the Server.
environmentobject of string valuesNo{}Inline environment variables for this process. Use for values safe to store in agent-up.json and Server workspace state.
environmentFilesarray of stringsNo[]Workspace-relative .env-style files loaded when the process starts.
databasebooleanNofalseEnables the Desktop database viewer tab for this application. Supported today for Postgres-backed services.

Example:

{
"name": "Web",
"command": "npm run dev",
"install": "npm install",
"path": "web",
"environmentFiles": [".env"],
"environment": {
"NODE_ENV": "development"
},
"ports": [
{ "variable": "WEB_PORT", "defaultPort": 5173, "protocol": "http" }
]
}

.NET Application Object

Used in dotnet.

PropertyTypeRequiredDefaultDescription
namestringYesnoneApplication display name.
sdkstring or nullNono version requirementRequired .NET SDK version expression, such as 10.0.x. The .NET capability validates this before launch.
run.NET RunYesnonedotnet run launch inputs.
portsarray of PortNo[]Port declarations owned and allocated by the Server.
environmentobject of string valuesNo{}Inline environment variables for this process.
environmentFilesarray of stringsNo[]Workspace-relative .env-style files loaded when the process starts.
databasebooleanNofalseEnables the Desktop database viewer tab for this application. Supported today for Postgres-backed services.

Example:

{
"name": "API",
"sdk": "10.0.x",
"run": {
"project": "src/Api/Api.csproj",
"arguments": ["--no-launch-profile"]
},
"environmentFiles": [".env"],
"environment": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"ports": [
{ "variable": "API_PORT", "defaultPort": 5000, "protocol": "http" }
]
}

.NET Run Object

Used as dotnet[].run.

PropertyTypeRequiredDefaultDescription
projectstringYesnoneProject path passed to dotnet run --project.
argumentsarray of stringsNo[]Additional command arguments passed to dotnet run.

Docker Capability Object

Used in docker.

PropertyTypeRequiredDefaultDescription
namestringYesnoneContainer display name.
imagestringYesnoneDocker image reference.
portsarray of PortNo[]Container port declarations owned and allocated by the Server.
environmentobject of string valuesNo{}Inline container environment variables passed as Docker -e arguments.
volumesarray of stringsNo[]Docker volume mappings passed as Docker -v arguments.
environmentFilesarray of stringsNo[]Workspace-relative files passed to Docker as --env-file arguments.
commandarray of stringsNonullArguments appended after the image in docker run, overriding the container's default command (equivalent to Docker Compose's command).
databasebooleanNofalseEnables the Desktop database viewer tab for this application. Supported today for Postgres-backed services.

Example:

{
"name": "Database",
"image": "postgres:17",
"environmentFiles": [".env.database"],
"environment": {
"POSTGRES_USER": "inventory"
},
"volumes": ["inventory-pgdata:/var/lib/postgresql/data"],
"ports": [
{ "variable": "DB_PORT", "defaultPort": 5432, "protocol": "tcp" }
]
}

Docker Service Object

Used in services. This is the legacy Docker service shape. It remains supported for compatibility.

PropertyTypeRequiredDefaultDescription
namestringYesnoneService display name.
imagestringYesnoneDocker image reference.
portsarray of PortNo[]Container port declarations owned and allocated by the Server.
environmentobject of string valuesNo{}Inline container environment variables passed as Docker -e arguments.
volumesarray of stringsNo[]Docker volume mappings passed as Docker -v arguments.
environmentFilesarray of stringsNo[]Workspace-relative files passed to Docker as --env-file arguments.
commandarray of stringsNonullArguments appended after the image in docker run, overriding the container's default command (equivalent to Docker Compose's command).
databasebooleanNofalseEnables the Desktop database viewer tab for this application. Supported today for Postgres-backed services.

Port Object

Used in applications[].ports, dotnet[].ports, docker[].ports, and services[].ports.

PropertyTypeRequiredDefaultDescription
variablestring or nullNonullEnvironment variable that receives the Server-allocated host port. Omit or set to null when no environment variable should be injected.
defaultPortintegerYesnonePreferred or conventional port for the application/container. Agent-Up uses this as allocation intent and container target port for Docker mappings.
protocolstringNohttpProtocol label for the port, usually http or tcp.
healthCheckstring or nullNonullHTTP path the Server probes every 5 seconds to determine port health (e.g. "/health"). When set, the port LED shows amber (Checking) until the path responds with a non-5xx status, then green (Healthy); red (Unhealthy) if it later fails. Omitting this field falls back to a client-side TCP probe.
metricsstring or nullNonullHTTP path the Server pulls every 30 seconds for application metrics (e.g. "/metrics"). The endpoint should return JSON with a metrics object or top-level string/number fields. Results are recorded in the application audit trail; applications do not need Agent-Up dependencies.

For local processes, every application receives the full workspace port map. For Docker containers, Agent-Up publishes each declared port as allocatedHostPort:defaultPort and adds the host.agent-up hostname for reaching host-run workspace applications from inside the container when those applications listen on an address reachable from Docker's host gateway. Loopback-only host listeners are not reachable from containers through this alias.

Environment Object

Used as environment on all launchable entries.

ConstraintDescription
TypeJSON object.
KeysEnvironment variable names.
ValuesStrings.
StorageStored in agent-up.json and Server workspace state.
Intended useNon-secret values, feature flags, and development mode switches.

Docker container environment values can reference workspace port variables with ${VARIABLE}. Agent-Up resolves those references from the workspace-wide allocated port map before starting the container.

Example:

{
"environment": {
"ASPNETCORE_ENVIRONMENT": "Development",
"FEATURE_FLAGS": "search,checkout"
}
}

Environment Files Array

Used as environmentFiles on all launchable entries.

ConstraintDescription
TypeArray of strings.
Path rulesEach path is relative to the workspace root. Absolute paths and paths that escape the workspace root are rejected.
StorageOnly file paths are stored. File values are read at launch time.
Missing filesLaunch fails if a declared file does not exist.
Intended useLocal secrets and developer-specific values.

See environment and secrets for parsing and precedence.