AgentBox marketplace deployment (historical)
The removed AgentBox container surface, kept for anyone debugging an older build.
OpenHuman once shipped a container surface for the GMI Cloud AgentBox marketplace. It is gone from openhuman-core. A regression test, agentbox_run_and_jobs_paths_are_no_longer_public in crates/openhuman-rpc/src/server/auth_tests.rs, checks that /run and /jobs/{job_id} no longer exist.
OPENHUMAN_AGENTBOX_MODE has no reader left in crates/openhuman-core/src. The Dockerfile and .env.example still mention it, and those mentions are stale. If you need to run OpenHuman on AgentBox today, ask the team that owns the GMI Cloud deployment where that surface lives now.
The rest of this page describes how the old surface worked. Read it only if you are debugging an older build that still has it.
Container contract
With OPENHUMAN_AGENTBOX_MODE=1, the core HTTP server exposed three routes:
POST /runaccepts work and returns202 { "job_id": "<uuid>" }. The body is{ "payload": { "message": "<string>", "thread_id": "<optional string>" } }.GET /jobs/{job_id}returns{ "status": "pending|running|completed|failed", "result": ..., "error": ... }.GET /healthis a liveness check.
/run and /jobs/* were unauthenticated at the container boundary. AgentBox's edge handled auth before traffic reached the container.
Registering in the AgentBox console
The console has a four-step wizard.
Basic info. Name it
OpenHumanand add a description.Infrastructure. Pick the Docker image source, compute tier and region. Turn on the "GMI MaaS" toggle so the platform injects
GMI_MAAS_BASE_URLandGMI_MAAS_API_KEYat runtime.Env variables. Set these:
OPENHUMAN_AGENTBOX_MODE=1OPENHUMAN_AGENTBOX_JOB_TIMEOUT_SECS(optional, default 600)GMI_MODELS, the marketplace-approved model id, for exampledeepseek-ai/DeepSeek-V4-ProOPENHUMAN_WORKSPACE, a writable container path such as/home/openhuman/.openhumanRUST_LOG=info(usedebugfor the first deploy)
Review and register. Confirm, then test from the console panel.
The platform API key is shown once, on the registration confirmation screen. Save it to your secrets manager right away. The console cannot show it again.
Pushing the image
Build from main with the existing Dockerfile and push to your registry:
The first deploy takes 10 to 25 minutes to reach running. Later deploys are faster.
Long-running requests
AgentBox treats requests over 2 minutes as long-running, so OpenHuman used polling. The agent ran inside a worker task, capped by OPENHUMAN_AGENTBOX_JOB_TIMEOUT_SECS (10 minutes by default). There was no streaming.
A polling client should:
Send
POST /runand keep thejob_id.Call
GET /jobs/{job_id}every 1 to 3 seconds.Stop when
statusiscompletedorfailed.
Finished jobs were kept for one hour, then garbage-collected. A long pause between polling and reading can return 404.
Local smoke test
Troubleshooting
404 job not foundafter a successful submit: the one-hour retention window passed, or the container restarted. The job store was in memory only.status: "failed"witherror: "agentbox: agent runtime bridge not wired": you are on a build from before the runtime bridge landed. Rebuild from a currentmain.status: "failed"witherror: "job timeout after Ns": the agent ran pastOPENHUMAN_AGENTBOX_JOB_TIMEOUT_SECS. Raise it on the next deploy.[agentbox::gmi] not registering GMI MaaS provider: missing/blank: GMI_MAAS_API_KEY: the platform did not inject the key. Check the MaaS toggle in step 2 of the wizard.[agentbox::gmi] current-thread runtime detected, skipping provider registration: the core booted in a single-threaded tokio runtime. Use the standardservesubcommand, which starts a multi-thread runtime.
Last updated