Skip to content

The App Profiles API manages user profiles that bundle default selectors and source overrides. Use these endpoints to list, create, update, delete, and select the active profile that subsequent app-run requests will inherit from.

List all configured user profiles with their default preferences and source overrides.

This endpoint takes no parameters.

[
{
"name": "default",
"description": "Default profile (inherits global sources)",
"defaults": {
"os": "any",
"kind": "any",
"source": [],
"pick": "ask",
"redirect": false,
"limit": 20
},
"sources_mode": "inherit",
"sources": [],
"policy": {
"require_verified": true,
"require_integrity": true,
"allow_delegated_execution": false,
"allow_redirect": true,
"deny_providers": [],
"deny_source_ids": []
}
},
{
"name": "trusted",
"description": "Trusted providers only",
"defaults": {
"os": "linux",
"kind": "gui",
"source": ["nix", "pkgx"],
"pick": "first",
"limit": 10
},
"sources_mode": "allowlist",
"sources": [
{ "source_id": "nixpkgs", "enabled": true, "priority": 100 },
{ "source_id": "pkgx", "enabled": true, "priority": 80 }
],
"policy": {
"require_verified": true,
"require_integrity": true
}
}
]

Create a new user profile with default preferences and optional source overrides.

This endpoint takes no parameters.

FieldTypeRequiredDescription
namestringYesUnique profile name
descriptionstringNoHuman-readable profile description
defaultsobjectNoDefault selector values applied to requests that do not explicitly set them
sources_modestringNoinherit to start from global sources, or allowlist to disable all sources except those listed in sources
sourcesarrayNoPer-source overrides. Default: []
policyobjectNoPolicy configuration controlling verification, integrity, execution, redirects, and provider denylists
[
{
"name": "minimal",
"description": "Minimal profile for CLI tools",
"defaults": {
"kind": "cli",
"pick": "first",
"limit": 5
},
"sources_mode": "inherit",
"sources": []
}
]

POST /api/v1/run/profiles/{profile}/select

Section titled “POST /api/v1/run/profiles/{profile}/select”

Set the given profile as the currently active profile. Its defaults will be applied to all subsequent requests that do not explicitly override them.

NameInTypeRequiredDescription
profilepathstringYesProfile name to select
{
"selected_profile": "default"
}

Partially update a profile configuration. Supports merging description, defaults, sources_mode, and sources fields.

NameInTypeRequiredDescription
profilepathstringYesProfile name

The request body is a partial object. Any combination of description, defaults, sources_mode, and sources may be included. Only the fields present in the body are merged into the existing profile; omitted fields are left unchanged.

{
"name": "default",
"description": "Default profile (inherits global sources)",
"defaults": {
"os": "any",
"kind": "any",
"source": [],
"pick": "ask",
"redirect": false,
"limit": 20
},
"sources_mode": "inherit",
"sources": [
{ "source_id": "nixpkgs", "enabled": true, "priority": 100 }
],
"policy": {
"require_verified": true,
"require_integrity": true,
"allow_delegated_execution": false,
"allow_redirect": true,
"deny_providers": [],
"deny_source_ids": []
}
}

Remove a profile by name. If the deleted profile was the selected profile, the selection is cleared.

NameInTypeRequiredDescription
profilepathstringYesProfile name

The profile was deleted successfully. No response body is returned.