Skip to content
Hoody.com

The Hoody Run service is a pure application resolver. It maps a request for an application (by name, source, version, channel, or other selector fields) to an exact shell command that can be run on a terminal. The service never executes anything itself; it returns the resolved command plus, when relevant, a preview handoff that points at the browser display and terminal viewer where the app will appear.

Use these endpoints when you want to look up a program by name and get a deterministic command back. Pair them with the search endpoint to obtain a stable set_id, then resolve a specific candidate from that set race-free.

Resolve and select an application using query parameters, then return the exact shell command to run. Supports all selector fields plus pick mode and output control.

NameInTypeRequiredDescription
appquerystringYesPrimary name query
osquerystringNoTarget OS filter
sourcequeryarrayNoSource kind filter (repeatable)
kindquerystringNoApp kind filter
archquerystringNoTarget CPU architecture filter
tagsqueryarrayNoFree-form tags for filtering and ranking (repeatable)
profilequerystringNoNamed profile for default preferences
channelquerystringNoRelease channel hint
versionquerystringNoExact version or provider-defined version constraint
variantquerystringNoProvider-specific variant hint
publisherquerystringNoPublisher hint for curated registries
repoquerystringNoRepository hint such as owner/name
releasequerystringNoRelease hint such as a tag name
assetquerystringNoDesired asset name or pattern
pickquerystringNoCandidate selection mode (ask, first, index, id)
pick_indexqueryintegerNoCandidate index (required when pick=index)
candidate_idquerystringNoSpecific candidate ID (required when pick=id)
set_idquerystringNoBind pick to a specific candidate set
terminal_idqueryintegerNoTerminal session ID (default 1)
displayquerystringNoX11 DISPLAY number
originquerystringNoOrigin identifier for observability propagation
dry_runquerybooleanNoIf true, force command-only response (hoody-run never executes)
print_curlquerystringNoGenerate curl command (hoody-run)
formatquerystringNoOutput format (json or html)
limitqueryintegerNoMax candidates (default 25)
Terminal window
curl -sS "https://{projectId}-{containerId}-run-1.{server}.containers.hoody.icu/api/v1/run/resolve?app=firefox&pick=first"

Same behavior as GET /api/v1/run/resolve but accepts the full Selector as a JSON request body. Useful for programmatic clients and complex selectors.

The request body follows the Selector schema. Only app is required.

{
"app": "firefox",
"os": "linux",
"kind": "gui",
"source": ["nix"],
"pick": "first"
}
Terminal window
curl -sS -X POST "https://{projectId}-{containerId}-run-1.{server}.containers.hoody.icu/api/v1/run/resolve" \
-H "Content-Type: application/json" \
-d '{"app":"firefox","os":"linux","kind":"gui","pick":"first"}'

Resolve an application using clean, bookmarkable path-based URLs. Supports both positional and key-value path segments.

Positional forms:

  • /api/v1/run/go/{app}
  • /api/v1/run/go/{os}/{app}
  • /api/v1/run/go/{os}/{source}/{app}
  • /api/v1/run/go/{os}/{source}/{kind}/{app}

Key-value form: /api/v1/run/go/app/{app}/os/{os}/source/{source}/kind/{kind}/pick/{pick}/...

NameInTypeRequiredDescription
restpathstringYesPath segments for positional or key-value app specification
osquerystringNoTarget OS filter when not supplied in the path
sourcequeryarrayNoSource kind filter (repeatable)
kindquerystringNoApp kind filter when not supplied in the path
archquerystringNoTarget CPU architecture filter
tagsqueryarrayNoFree-form tags for filtering and ranking (repeatable)
profilequerystringNoNamed profile for default preferences
channelquerystringNoRelease channel hint
versionquerystringNoExact version or provider-defined version constraint
variantquerystringNoProvider-specific variant hint
publisherquerystringNoPublisher hint for curated registries
repoquerystringNoRepository hint such as owner/name
releasequerystringNoRelease hint such as a tag name
assetquerystringNoDesired asset name or pattern
pickquerystringNoCandidate selection mode (ask, first, index, id)
pick_indexqueryintegerNoCandidate index (required when pick=index)
candidate_idquerystringNoSpecific candidate ID (required when pick=id)
set_idquerystringNoBind pick to a specific candidate set
terminal_idqueryintegerNoTerminal session ID when not supplied in the path
displayquerystringNoX11 DISPLAY number
originquerystringNoOrigin identifier for observability propagation
dry_runquerybooleanNoIf true, force command-only response (hoody-run never executes)
print_curlquerystringNoGenerate curl command (hoody-run)
formatquerystringNoOutput format (json or html)
limitqueryintegerNoMax candidates (default 25)
Terminal window
curl -sS "https://{projectId}-{containerId}-run-1.{server}.containers.hoody.icu/api/v1/run/go/linux/nix/gui/firefox?pick=first"

Same as /api/v1/run/go/{rest} but with terminal_id extracted from the path prefix. Allows clean URLs that specify both the target terminal and the application in a single path. Example: /api/v1/run/t/2/go/linux/nix/firefox runs Firefox in terminal 2.

NameInTypeRequiredDescription
terminal_idpathintegerYesTerminal session ID (1-65535)
restpathstringYesPath segments for app specification
osquerystringNoTarget OS filter when not supplied in the path
sourcequeryarrayNoSource kind filter (repeatable)
kindquerystringNoApp kind filter when not supplied in the path
archquerystringNoTarget CPU architecture filter
tagsqueryarrayNoFree-form tags for filtering and ranking (repeatable)
profilequerystringNoNamed profile for default preferences
channelquerystringNoRelease channel hint
versionquerystringNoExact version or provider-defined version constraint
variantquerystringNoProvider-specific variant hint
publisherquerystringNoPublisher hint for curated registries
repoquerystringNoRepository hint such as owner/name
releasequerystringNoRelease hint such as a tag name
assetquerystringNoDesired asset name or pattern
pickquerystringNoCandidate selection mode (ask, first, index, id)
pick_indexqueryintegerNoCandidate index (required when pick=index)
candidate_idquerystringNoSpecific candidate ID (required when pick=id)
set_idquerystringNoBind pick to a specific candidate set
displayquerystringNoX11 DISPLAY number
originquerystringNoOrigin identifier for observability propagation
dry_runquerybooleanNoIf true, force command-only response (hoody-run never executes)
print_curlquerystringNoGenerate curl command (hoody-run)
formatquerystringNoOutput format (json or html)
limitqueryintegerNoMax candidates (default 25)
Terminal window
curl -sS "https://{projectId}-{containerId}-run-1.{server}.containers.hoody.icu/api/v1/run/t/2/go/linux/nix/firefox?pick=first"

Search for runnable application candidates across all configured and enabled package sources. Returns a ranked list of candidates with stable ordering for pick-by-index operations.

The returned set_id can be used with subsequent run requests to ensure race-free candidate selection.

NameInTypeRequiredDescription
appquerystringYesPrimary name query (aliases q, name)
osquerystringNoTarget OS filter
sourcequeryarrayNoSource kind filter (repeatable)
kindquerystringNoApp kind filter (gui, cli, any)
archquerystringNoTarget CPU architecture filter
tagsqueryarrayNoFree-form tags for filtering and ranking (repeatable)
profilequerystringNoNamed profile for default preferences
channelquerystringNoRelease channel hint (for example stable or beta)
versionquerystringNoExact version or provider-defined version constraint
variantquerystringNoProvider-specific variant hint (for example portable or headless)
publisherquerystringNoPublisher hint for curated registries
repoquerystringNoRepository hint such as owner/name
releasequerystringNoRelease hint such as a tag name
assetquerystringNoDesired asset name or pattern
limitqueryintegerNoMax candidates to return (default 25)
Terminal window
curl -sS "https://{projectId}-{containerId}-run-1.{server}.containers.hoody.icu/api/v1/run/search?app=firefox&kind=gui"

Resolve a full ranked candidate set under a bounded cap, then page through it with an opaque cursor. This is the stable pagination contract for large result sets.

The request body follows the PagedSearchRequest schema. The selector field is required; cursor and page_size are optional for subsequent pages.

{
"selector": {
"app": "node",
"kind": "cli"
},
"page_size": 50
}
Terminal window
curl -sS -X POST "https://{projectId}-{containerId}-run-1.{server}.containers.hoody.icu/api/v1/run/search/paged" \
-H "Content-Type: application/json" \
-d '{"selector":{"app":"node","kind":"cli"},"page_size":50}'

Resolve, optionally pick, and normalize the execution plan for a selector without scheduling execution. Returns the recommended mode, the selected candidate (if any), the shell command, and any missing requirements or warnings.

The request body follows the Selector schema. Only app is required.

{
"app": "firefox",
"kind": "gui",
"profile": "default"
}
Terminal window
curl -sS -X POST "https://{projectId}-{containerId}-run-1.{server}.containers.hoody.icu/api/v1/run/preflight" \
-H "Content-Type: application/json" \
-d '{"app":"firefox","kind":"gui","profile":"default"}'

Process multiple search or command-only run items in one request. Each item produces its own success or error payload.

The request body follows the BatchRequest schema. The items array contains individual BatchItemRequest entries, each carrying a request_id, a mode (search or run), and a selector.

{
"items": [
{
"request_id": "req-1",
"mode": "search",
"selector": { "app": "firefox", "kind": "gui" }
},
{
"request_id": "req-2",
"mode": "run",
"selector": { "app": "node", "kind": "cli", "pick": "first" }
}
]
}
Terminal window
curl -sS -X POST "https://{projectId}-{containerId}-run-1.{server}.containers.hoody.icu/api/v1/run/batch" \
-H "Content-Type: application/json" \
-d '{"items":[{"request_id":"req-1","mode":"search","selector":{"app":"firefox","kind":"gui"}},{"request_id":"req-2","mode":"run","selector":{"app":"node","kind":"cli","pick":"first"}}]}'

Returns the full persisted runtime configuration including sources, profiles, and the currently selected profile.

This endpoint takes no parameters.

Terminal window
curl -sS "https://{projectId}-{containerId}-run-1.{server}.containers.hoody.icu/api/v1/run/config"

Returns the standardized 9-field health response. Unauthenticated. Always returns HTTP 200 with application/json when the service is up.

This endpoint takes no parameters.

Terminal window
curl -sS "https://{projectId}-{containerId}-run-1.{server}.containers.hoody.icu/api/v1/run/health"

Returns the OpenAPI 3.0.3 specification for this API in JSON format. Converted from the canonical YAML source.

This endpoint takes no parameters.

Terminal window
curl -sS "https://{projectId}-{containerId}-run-1.{server}.containers.hoody.icu/api/v1/run/openapi.json"

Returns the OpenAPI 3.0.3 specification for this API in YAML format.

This endpoint takes no parameters.

Terminal window
curl -sS "https://{projectId}-{containerId}-run-1.{server}.containers.hoody.icu/api/v1/run/openapi.yaml"