Skip to content
Hoody.com

Hoody Run is a pure application resolver. Given an app name plus selector hints, it returns the exact shell command needed to launch that app, without ever executing it. The CLI equivalent is hoody run <app>.

A resolve response is one of two shapes: status: "dry-run" (a single candidate is selected and its shell_command is returned, with an optional preview browser handoff) or status: "resolved" (a full ranked candidate list is returned, with no single candidate selected). Every candidate carries a kind of gui, cli, or any (any means the source did not classify the candidate).

Map an app name plus selector hints to the exact shell command to launch it. Both the query and JSON body forms below accept the full selector and return the same response shape.

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 selector tags (repeatable). Accepted and passed through to sources and recipe templates; they do not filter or rank candidates
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 "https://{projectId}-{containerId}-run-1.{server}.containers.hoody.com/api/v1/run/resolve?app=firefox&kind=gui&os=linux&pick=first" \
-H "Authorization: Bearer <token>"

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.

FieldTypeRequiredDescription
appstringYesPrimary name query (aliases q, name)
osstringNoTarget OS filter
kindstringNoApp kind filter
sourcearrayNoSource kind filter (repeatable). Empty means no filter
archstringNoTarget CPU architecture filter
tagsarrayNoFree-form selector tags (repeatable). Accepted and passed through to sources and recipe templates; they do not filter or rank candidates
profilestringNoNamed profile for default preferences
channelstringNoRelease channel hint (for example stable or beta)
versionstringNoExact version or provider-defined version constraint
variantstringNoProvider-defined variant hint
publisherstringNoPublisher hint for curated registries
repostringNoRepository hint such as owner/name
releasestringNoRelease hint such as a tag name
assetstringNoDesired asset name or pattern
pickstringNoCandidate selection mode (ask, first, index, id)
pick_indexintegerNoCandidate index (required when pick=index)
candidate_idstringNoSpecific candidate ID (required when pick=id)
set_idstringNoBind pick to a specific candidate set
terminal_idintegerNoTerminal session ID. Default: 1
displaystringNoX11 DISPLAY number
originstringNoOrigin identifier for observability propagation
formatstringNoOutput format (json or html)
dry_runbooleanNoForce command-only output. hoody-run never executes
print_curlstringNoGenerate curl command
limitintegerNoMax candidates. Default: 25
Terminal window
curl -X POST "https://{projectId}-{containerId}-run-1.{server}.containers.hoody.com/api/v1/run/resolve" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"app": "firefox",
"os": "linux",
"kind": "gui",
"pick": "first"
}'

Use these endpoints when you want clean, bookmarkable URLs that embed the app selector in the path itself. They accept the same query-string overrides as the resolve endpoints, and the terminal-anchored form lets you pin a target terminal session in the URL.

Resolve an application using path segments. Both positional and key-value forms are supported:

  • Positional: /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: /api/v1/run/go/app/{app}/os/{os}/source/{source}/kind/{kind}/pick/{pick}/...

{rest} captures everything after /go/.

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 selector tags (repeatable). Accepted and passed through to sources and recipe templates; they do not filter or rank candidates
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 "https://{projectId}-{containerId}-run-1.{server}.containers.hoody.com/api/v1/run/go/linux/nix/firefox?pick=first" \
-H "Authorization: Bearer <token>"

Same as GET /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. For example, /api/v1/run/t/2/go/linux/nix/firefox resolves Firefox for 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 selector tags (repeatable). Accepted and passed through to sources and recipe templates; they do not filter or rank candidates
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 "https://{projectId}-{containerId}-run-1.{server}.containers.hoody.com/api/v1/run/t/2/go/linux/nix/firefox?pick=first" \
-H "Authorization: Bearer <token>"

List candidates for an app without picking one. Search results carry a set_id that can be passed to a subsequent resolve request to select a specific candidate race-free. The paged variant exposes a stable cursor for browsing large result sets.

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.

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 selector tags (repeatable). Accepted and passed through to sources and recipe templates; they do not filter or rank candidates
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 "https://{projectId}-{containerId}-run-1.{server}.containers.hoody.com/api/v1/run/search?app=firefox&kind=gui&os=linux" \
-H "Authorization: Bearer <token>"

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.

FieldTypeRequiredDescription
selectorobjectYesSearch selector (a full Selector object)
cursorstringNoOpaque pagination cursor returned by a previous paged response
page_sizeintegerNoPage size (1-100)

The embedded selector accepts the same fields as the JSON body of POST /api/v1/run/resolve (see the request body table there).

Terminal window
curl -X POST "https://{projectId}-{containerId}-run-1.{server}.containers.hoody.com/api/v1/run/search/paged" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"selector": { "app": "firefox", "kind": "gui", "os": "linux" },
"page_size": 25
}'

Resolve and normalize the execution plan for a selector without scheduling execution. The response reports the recommended execution mode, any missing requirements, and the effective policy that will be applied.

Preflight a run request by resolving, optionally picking, and normalizing the execution plan.

FieldTypeRequiredDescription
appstringYesPrimary name query (aliases q, name)
osstringNoTarget OS filter
kindstringNoApp kind filter
sourcearrayNoSource kind filter (repeatable). Empty means no filter
archstringNoTarget CPU architecture filter
tagsarrayNoFree-form selector tags (repeatable). Accepted and passed through to sources and recipe templates; they do not filter or rank candidates
profilestringNoNamed profile for default preferences
channelstringNoRelease channel hint
versionstringNoExact version or provider-defined version constraint
variantstringNoProvider-defined variant hint
publisherstringNoPublisher hint for curated registries
repostringNoRepository hint such as owner/name
releasestringNoRelease hint such as a tag name
assetstringNoDesired asset name or pattern
pickstringNoCandidate selection mode (ask, first, index, id)
pick_indexintegerNoCandidate index (required when pick=index)
candidate_idstringNoSpecific candidate ID (required when pick=id)
set_idstringNoBind pick to a specific candidate set
terminal_idintegerNoTerminal session ID. Default: 1
displaystringNoX11 DISPLAY number
originstringNoOrigin identifier for observability propagation
formatstringNoOutput format (json or html)
dry_runbooleanNoForce command-only output. hoody-run never executes
print_curlstringNoGenerate curl command
limitintegerNoMax candidates. Default: 25
Terminal window
curl -X POST "https://{projectId}-{containerId}-run-1.{server}.containers.hoody.com/api/v1/run/preflight" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"app": "firefox",
"os": "linux",
"kind": "gui",
"pick": "first"
}'

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

Execute a batch of search or run items. Each item’s mode selects between search (return the candidate list and set_id) and run (return the resolved shell command and handoff).

FieldTypeRequiredDescription
itemsarrayNoBatch items. Each item has request_id, mode, and selector

Each items[] entry has the following fields:

FieldTypeRequiredDescription
request_idstringYesCaller-supplied identifier echoed back in the result
modestringYesBatch item mode (search or run)
selectorobjectYesThe Selector for this item (same shape as the JSON body of POST /api/v1/run/resolve)
Terminal window
curl -X POST "https://{projectId}-{containerId}-run-1.{server}.containers.hoody.com/api/v1/run/batch" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"items": [
{ "request_id": "search-firefox", "mode": "search", "selector": { "app": "firefox", "kind": "gui", "os": "linux" } },
{ "request_id": "run-firefox", "mode": "run", "selector": { "app": "firefox", "kind": "gui", "os": "linux", "pick": "first" } }
]
}'

Read the persisted runtime configuration and check service health.

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

This endpoint takes no parameters.

Terminal window
curl "https://{projectId}-{containerId}-run-1.{server}.containers.hoody.com/api/v1/run/config" \
-H "Authorization: Bearer <token>"

Return the standardized health response. Unauthenticated. Always returns HTTP 200 with application/json when the service is up.

This endpoint takes no parameters.

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