Getting Started¶
This guide walks you through deploying your first AI Job on HollowHost, from signing up to triggering your first run.
1. Create a HollowHost account¶
- Go to app.hollowhost.com.
- Click Get Started Free and sign up with email + password (or a social provider if enabled in your environment).
- Confirm your email via the one-time code HollowHost emails you.
You land on the Dashboard with your free-tier token balance displayed.
2. Prepare your AI Job repository¶
HollowHost expects a Git repository that can be built into a container image. The minimum requirements:
- A language runtime declared. Python and TypeScript are both supported out of the box.
- An entry-point script (e.g.
src/main.py,src/index.ts) that HollowHost executes top-to-bottom on every run — likepython src/main.py. There is nohandler(event, context)callback: your script IS the job. - A dependency manifest:
- Python:
requirements.txt(pip) orpyproject.toml(uv). - TypeScript:
package.json(npm / yarn / pnpm).
- Python:
Configuration reaches your script through environment variables: the env vars and secrets
you define in the dashboard, plus the platform-provided HH_* variables:
| Variable | Content |
|---|---|
HH_EVENT |
The optional JSON event payload for this run (JSON string; absent when no payload was sent) |
HH_RUN_ID |
The run's unique identifier |
HH_SOURCE |
api (manual/API trigger) or scheduler (cron) |
HH_SCHEDULED_TIME |
ISO timestamp the schedule fired at (scheduled runs only) |
A minimal Python example:
import json
import os
event = json.loads(os.environ.get("HH_EVENT", "null"))
print(f"Hello from my first HollowHost AI Job! event={event}")
Push this to a GitHub repository — public or private. If private, you will provide a
GitHub Personal Access Token with repo read scope when creating the AI Job.
Reusable demo repo
Want to try without writing any code? The team maintains a ready-to-deploy
weather AI Job at
One-Click-Flare/ia-agent-meteo
— use it as-is or fork it.
3. Create your AI Job in HollowHost¶
- From the dashboard, click AI Jobs → New AI Job.
- Step 1 — Repository:
- Repository URL —
https://github.com/<org>/<repo>. - Branch (optional) — the git branch to deploy. Leave empty to use the
repository's default branch (shown as
(default branch)). - GitHub token — PAT with read access (stored encrypted).
- Repository URL —
- Step 2 — Configuration:
- Name — human-friendly label (e.g.
daily-weather). - Description — short summary of what this AI Job does.
- Python dependency manager —
piporuv(only for Python projects). - Sub-path (optional) — for mono-repos, the sub-directory to deploy. Leave empty to deploy the repository root.
- Entry Point — the file to run (e.g.
src/main.py).
- Name — human-friendly label (e.g.
- Click Create.
Mono-repo: Entry Point is relative to the sub-path
When you set a Sub-path, that sub-directory becomes the AI Job's root at
build time, so the Entry Point stays relative to it. For an AI Job at
apps/agent-meteo/src/main.py with Sub-path apps/agent-meteo, set Entry
Point to src/main.py — not apps/agent-meteo/src/main.py.
HollowHost validates the repository — and, when set, the branch and
sub-path existence (status VALIDATING → VALIDATED).
Mono-repo example
Repo One-Click-Flare/mono-repo, branch dev, AI Job in apps/agent-meteo:
set Branch = dev, Sub-path = apps/agent-meteo, Entry Point =
src/main.py. The equivalent CLI command is in the
CLI reference.
4. Publish the AI Job¶
Once the AI Job is VALIDATED:
- Open the AI Job detail page.
- Click Publish.
HollowHost now:
- Builds a container image from your repository.
- Creates a dedicated, isolated execution environment for this AI Job.
- Deploys your AI Job and makes it ready to run.
Status flow: DEPLOYING → DEPLOYED (or DEPLOYMENT_ERROR — check the build logs from the
AI Job page if so).
5. Configure env vars and secrets (optional)¶
From the AI Job's Settings tab:
- Environment variables — non-sensitive config (e.g.
LOG_LEVEL,TIMEZONE). Injected into your AI Job at runtime. - Secrets — sensitive values (e.g. API keys). Stored encrypted and injected at runtime. Secrets never leave the AI Job's isolation boundary.
Changes take effect on the next run.
6. Trigger your first run¶
From the AI Job page:
- Manual run — click Run now. To attach a JSON event payload, trigger the run
from the CLI (
hollowhost ai-jobs run <id> --event '{...}') or the API — your code receives it as theHH_EVENTenvironment variable. - Scheduled run — switch to the Schedule tab, enter a cron expression (e.g.
0 9 * * *for every day at 09:00 UTC), and save. HollowHost will trigger the AI Job on the specified cadence.
Once a run completes (or fails), you'll see it in the Runs list with its duration, status, token usage, and a link to the full logs.
Event payload format¶
An event payload lets you parameterize a single run — same deployed code, different input — without touching the AI Job's configuration (backfill a specific day, process one item, retry a failed batch…).
API contract — POST /agents/{id}/runs with a JSON body:
- The
eventkey can hold any JSON value: object, array, string, number, boolean ornull. Objects are recommended — they stay extensible. - Maximum request body size: 128 KB. Larger payloads, non-JSON bodies, or a body
that is not a JSON object envelope are rejected with
400 {"code": "INVALID_EVENT_PAYLOAD"}and no run is created. - The payload is ephemeral: relayed to that single run, never stored in the
database. Omitting the body (or the
eventkey) simply runs without a payload. - From the CLI:
hollowhost ai-jobs run <id> --event '{...}'or--event-file event.json(the CLI wraps your JSON in the envelope for you).
Runtime delivery — your script reads it from the environment:
| Variable | Content |
|---|---|
HH_EVENT |
The event value, serialized as a JSON string. Unset when the run was triggered without a payload — always handle the absent case. |
HH_RUN_ID |
Unique identifier of this run |
HH_SOURCE |
api (manual/API/CLI) or scheduler (cron) |
HH_SCHEDULED_TIME |
ISO 8601 timestamp the schedule fired at (scheduled runs only) |
No secrets in events
Event payloads are request data, not a secret store: they can appear in your own calling code, shell history, and client-side tooling. Keep API keys and credentials in the AI Job's Secrets — never in an event.
7. Iterate¶
Push new commits to your GitHub repo, click Publish again — HollowHost rebuilds the image and updates the AI Job. Previous versions remain available for rollback.
Next steps¶
- Set up token budgets and plan limits from your Account settings to control spend.
- Read the security model overview to understand the per-AI Job isolation guarantees.
Got stuck? File an issue on the GitHub repo or reach out to the HollowHost team.