Skip to Content
We are live but in Staging 🎉
API ReferenceComputeService

ComputeService

Last validated: 2026-05-20

ComputeService is the largest Ignite API domain and covers app lifecycle, draft/version lifecycle, invocation, execution retrieval, app observability, MCP export, and public catalog APIs.

App Lifecycle RPCs

RPCHTTP annotationPurpose
CreateAppPOST /v1/ignite/app/{organization_name}Create app metadata shell
UpdateAppConfigPATCH /v1/ignite/app/{organization_name}/{app_name}/configUpdate mutable app config
GetAppGET /v1/ignite/app/{organization_name}/{app_name}Get app metadata
ListAppsGET /v1/ignite/app/{organization_name}List tenant apps
DeleteAppDELETE /v1/ignite/app/{organization_name}/{app_name}Delete app
GetAppStateGET /v1/ignite/app/{organization_name}/{app_name}/stateDeployment state and serving posture
ListCatalogGET /v1/ignite/catalog/{organization_name}Tenant catalog view

Draft and Version RPCs

RPCHTTP annotationPurpose
SaveDraftPOST /v1/ignite/app/{organization_name}/{app_name}/draftUpload/replace draft code
GetDraftInfoGET /v1/ignite/app/{organization_name}/{app_name}/draftDraft status and compile metadata
CompileDraftPOST /v1/ignite/app/{organization_name}/{app_name}/draft/compileTrigger compile flow
TestDraftPOST /v1/ignite/app/{organization_name}/{app_name}/draft/testExecute draft without publish
PublishDraftPOST /v1/ignite/app/{organization_name}/{app_name}/draft/publishPromote draft to immutable version
ListAppVersionsGET /v1/ignite/app/{organization_name}/{app_name}/versionsVersion history
GetAppVersionGET /v1/ignite/app/{organization_name}/{app_name}/versions/{version}Version details
TestAppVersionPOST /v1/ignite/app/{organization_name}/{app_name}/versions/{version}/testTest specific version
RollbackAppPOST /v1/ignite/app/{organization_name}/{app_name}/rollbackRoll back active version
GetAppCodeGET /v1/ignite/app/{organization_name}/{app_name}/code (+ version binding)Retrieve source snapshot

Invocation and Execution RPCs

RPCHTTP annotationPurpose
InvokePOST /v1/ignite/app/{organization_name}/{app_name}/invokeStreaming invoke (head/chunk/trailer)
InvokeAsyncPOST /v1/ignite/app/{organization_name}/{app_name}/invoke-asyncDeprecated compatibility invoke path
GetExecutionGET /v1/ignite/executions/{execution_id}Fetch execution state/result
WatchExecutionGET /v1/ignite/executions/{execution_id}/watchStream execution updates
StreamExecutionInputgRPC stream onlyPush streamed input chunks to active execution

Compute invocation can also be reached through app-specific host URLs on gateway, using the same app identity and auth model.

App Observability and Runtime Diagnostics RPCs

RPCHTTP annotationPurpose
GetAppLogsGET /v1/ignite/app/{organization_name}/{app_name}/logsRetrieve recent app logs
StreamAppLogsGET /v1/ignite/app/{organization_name}/{app_name}/logs/streamTail logs
GetAppEventsGET /v1/ignite/app/{organization_name}/{app_name}/eventsRetrieve pod/platform lifecycle events
StreamAppEventsGET /v1/ignite/app/{organization_name}/{app_name}/events/streamStream events
ListAppReplicasGET /v1/ignite/app/{organization_name}/{app_name}/replicasList current replicas
GetExecutionStatsGET /v1/ignite/app/{organization_name}/{app_name}/stats/executionsTime-bucketed execution stats
GetBuildLogGET /v1/ignite/app/{organization_name}/{app_name}/builds/{build_id}/logReplay persisted build log
StreamCompileLogsGET /v1/ignite/compile/{deploy_id}/logsStream compile logs

Note: StreamCompileLogs uses a dedicated route shape to avoid gateway path ambiguity with app log routes.

MCP and Public Catalog RPCs

RPCHTTP annotationPurpose
GetMcpToolDefinitionGET /v1/ignite/app/{organization_name}/{app_name}/mcpTool descriptor for app
ListMcpToolsGET /v1/ignite/app/{organization_name}/mcp/toolsList MCP-exported app tools
ListPublicCatalogGET /v1/ignite/public/catalogBrowse public catalog
GetPublicCatalogDetailGET /v1/ignite/public/catalog/{name}Public catalog item detail
HealthCheckGET /v1/ignite/healthService health RPC contract

Supported Runtimes and BYOI Modes

Compile-source runtimes supported in Compute draft/code flows:

  • Python
  • Rust (native and wasm targets)
  • Go
  • Deno

Image mode (SaveDraft.code.image) supports BYOI and builder-assisted variants:

  1. prebuilt: run a prebuilt container image directly
  2. from_code: build image from archive (Dockerfile or Buildpacks path)
  3. from_git: build image from git source

BYOI can be used to:

  • Run existing containerized apps without SDK rewrites
  • Keep custom dependency/runtime stacks
  • Use private registries with registry_secret_ref
  • Expose multiple service ports and custom health paths through app config

gRPC and HTTP Examples

Create app metadata (gRPC)

grpcurl \ -H "authorization: Bearer $TOKEN" \ -d '{ "organization_name":"my-org", "name":"hello", "resource_tier":"RESOURCE_TIER_SMALL", "description":"hello app" }' \ rpc.dev.dodil.io:443 dodil.ignite.v1.ComputeService/CreateApp

Create app metadata (HTTP)

curl -sS -X POST \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ "https://api.dev.dodil.io/v1/ignite/app/myorg" \ -d '{ "organization_name":"myorg", "name":"hello", "resource_tier":"RESOURCE_TIER_SMALL" }'

Save draft using BYOI prebuilt image (gRPC)

grpcurl \ -H "authorization: Bearer $TOKEN" \ -d '{ "organization_name":"myorg", "app_name":"hello", "code":{ "image":{ "prebuilt":{ "image_ref":"ghcr.io/acme/hello:1.0.0", "registry_secret_ref":"ghcr-creds" } } } }' \ rpc.dev.dodil.io:443 dodil.ignite.v1.ComputeService/SaveDraft

Invoke published app (HTTP annotation contract)

curl -sS -X POST \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ "https://api.dev.dodil.io/v1/ignite/app/myorg/hello/invoke" \ -d '{ "http":{"method":"POST","path":"/"}, "body":"eyJuYW1lIjoid29ybGQifQ==" }'

Invoke via app-specific host URL (direct gateway path)

# Port 80 form curl -sS -X POST \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ "https://warehouse-query-public.ignite.dodil.cloud/" \ -d '{"query":"status"}' # Non-default port form curl -sS -X POST \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ "https://warehouse-query-public-8080.ignite.dodil.cloud/infer" \ -d '{"input":"hello"}'

Host URL behavior is derived from FunctionId DNS encoding:

  1. <app>-<org>.<base_domain> for port 80
  2. <app>-<org>-<port>.<base_domain> for non-default ports
  3. dots in function names are encoded as -dot-

Watch execution updates (gRPC stream)

grpcurl \ -H "authorization: Bearer $TOKEN" \ -d '{"execution_id":"<execution_id>"}' \ rpc.dev.dodil.io:443 dodil.ignite.v1.ComputeService/WatchExecution

Practical Caveats

  1. Invoke is the canonical invocation method; prefer it over InvokeAsync for new integrations.
  2. Not every ComputeService RPC currently has first-class CLI coverage.
  3. App logs/events APIs expose runtime state that may be naturally time-windowed/ephemeral depending on underlying infrastructure retention.
  4. MCP export behavior depends on app config (mcp_enabled) and publish lifecycle completion.