Skip to content
Hoody.com

Sign in once, create a container, and every terminal, file, and database on it is a URL. In this walkthrough you’ll spawn a computer, run code on it, and drive it from the CLI, a TypeScript program, and plain curl. There is no deployment step and no certificate to configure; every call is an ordinary HTTPS request.


Hoody has one control plane and several ways to reach it. All of them talk to the same account and the same containers, so switching between them requires no migration.

Four programmatic interfaces (the walkthrough below covers the first three):

InterfaceSetup
CLInpm install -g hoody-sdk, or without installing: npx hoody-sdk <command>
TypeScript SDKnpm install hoody-sdk@beta (Node.js 22.23+, or 24.18+ on the 24 line, or Bun)
Raw HTTPcurl with a Bearer token on api.hoody.com
Browser SDKPinned CDN build that exposes window.HoodySDK in any static page

Three entry points that need no code:

Entry pointWhat happens
ssh hoody.comSigns you in to a sandboxed Hoody CLI and launches the Hoody Agent TUI, with mouse support, from any machine with an ssh client; nothing is installed
os.hoody.comThe Hoody Agent in any browser; see Step 4
@hoody.comPaste it into ChatGPT, Claude, or any web-fetching AI agent; it fetches a Skill and drives your account with a token you give it
npx skills addInstalls the Hoody Skill into a coding agent you already run, so it knows the whole HTTP surface without being told each time

If you already work in a coding agent, install the Hoody Skill into it once and it knows the whole HTTP surface:

Terminal window
# The skill itself; deeper docs are fetched on demand
npx skills add https://hoody.com/SKILLS/SKILL.md
# The same skill plus the whole corpus on disk, for offline use
npx skills add HoodyNetwork/hoody-sdk

Works with

  • Claude Code
  • Codex
  • Cursor
  • Cline
  • Any MCP-less agent

CLI runs on

  • macOS
  • Linux
  • Windows

The agent still needs a token you give it. The Skill teaches it the endpoints; it does not grant access.


If you don’t have an account, create one at hoody.com/signup; it comes with a free-tier server. Then authenticate with whichever interface you picked:

Terminal window
# Install the CLI (it ships inside the hoody-sdk package)...
npm install -g hoody-sdk
# ...or skip the install entirely: npx hoody-sdk <command>
# Interactive sign-in (`hoody signup` if you don't have an account yet)
hoody login

The chain is short: your account holds servers, a project organizes containers, and a container is a full Linux computer running Debian with systemd. Your free-tier server is already on the account; grab its id, then build on it.

Terminal window
# Your free-tier server is already there; grab its server_id
# (-o json prints the response data itself, no envelope to unwrap)
SERVER_ID=$(hoody servers list -o json \
| jq -r '[.[] | select(.status == "active")][0].server_id')
# Create a project, then spawn a Kit container on that server
PROJECT_ID=$(hoody projects create --alias "my-first-project" -o json | jq -r '.id')
CONTAINER=$(hoody containers create --project $PROJECT_ID --server-id $SERVER_ID \
--name "dev-box" --hoody-kit -o json)
CONTAINER_ID=$(echo "$CONTAINER" | jq -r '.id')
SERVER_NAME=$(echo "$CONTAINER" | jq -r '.server_name')
# Wait until status is "running"; then the Kit URLs are live
hoody containers get $CONTAINER_ID -o json | jq -r '.status'

Every Kit service on your container answers at a stable HTTPS URL from the moment it exists:

https://{projectId}-{containerId}-{service}-{index}.{serverName}.containers.hoody.com

Nineteen services share that pattern: terminal, files, browser, display, code, exec, daemon, cron, watch, sqlite, curl, egress, pipe, run, notes, notifications, tunnel, proxyLogs, and a built-in AI agent. Two of them use short URL slugs (notificationsn, proxyLogslogs), and http-{port} covers anything you start on a port. This step uses three of them.

Terminal window
# Execute a shell command on your container
hoody terminal sessions exec -c $CONTAINER_ID --ephemeral \
--command "echo 'Hello from the cloud!'"
Terminal window
# Read a file from your container (-o raw prints it verbatim)
hoody files get -c $CONTAINER_ID /etc/hostname -o raw

Every Kit container ships a SQLite service; there is no database server to provision and no connection string to configure.

Terminal window
# Run a SQL transaction on the built-in SQLite
hoody db exec-transaction -c $CONTAINER_ID --db app --create-db-if-missing \
--transaction '[{"statement":"CREATE TABLE IF NOT EXISTS greetings (message TEXT)"},{"statement":"INSERT INTO greetings VALUES ('"'"'Hello, Hoody!'"'"')"},{"query":"SELECT * FROM greetings"}]' \
-o json

So far you’ve driven your container through the API. Hoody also has a browser interface: go to os.hoody.com, sign in, and you land in the Hoody Agent. Chat with it, run terminals, browse files, and manage every container from one screen.

The Agent is not hosted by Hoody. Your own container serves it, so every Kit container you spin up carries its own agent, reachable directly at:

https://{projectId}-{containerId}-agent-1.{serverName}.containers.hoody.com

Open it in any browser, embed it in an iframe, or share it with a teammate. A phone, a laptop, a TV, and a tablet all reach the same environment and the same state. The agent that manages your containers is itself running in a container.

Screenshot Coming Soon Hoody Agent with chat, terminal panes, and file views side by side in a browser tab
The Hoody Agent in a browser tab

Three more ways into the same account:

  • ssh hoody.com: the Hoody Agent, rendered as a TUI. The gateway drops you into a memory-only sandboxed Hoody CLI session (nothing persists between connections) that launches hoody agent, with mouse support, on any machine with an ssh client. Nothing is installed on the device; sign in inside the CLI, or pass a scoped token as the SSH username (ssh <hdy_token>@hoody.com) for scripts and CI.
  • @hoody.com: paste it into ChatGPT, Claude, Gemini, or any web-fetching AI agent. The agent fetches a Skill, a structured HTTP map of every capability on this page, and drives your account with a token you give it. There is no server to host and no plugin to install.
  • The browser build: one pinned script tag (https://cdn.jsdelivr.net/npm/hoody-sdk@1.0.0-beta.9/dist/hoody-sdk.browser.min.js) exposes window.HoodySDK in any static page. Hand pages short-lived scoped tokens, never your account credentials.

In this walkthrough you:

  1. Spawned a full Linux computer: real Debian with systemd, on your own server.
  2. Ran commands on it over HTTPS from the CLI, TypeScript, and bare curl, with no SSH keys and no client software.
  3. Read files and queried a database through URLs that an iframe, a webhook, or an AI agent can call the same way.
  4. Configured no certificate, port, or proxy; every service was already an HTTPS endpoint the moment the container existed.
  • servers list returns nothing active: a fresh free-tier server may still be provisioning, and provisioning time varies. Keep polling; it appears with status: "active" and a non-null server_id.
  • Kit URLs 404 or refuse to connect: the container isn’t running yet (poll it), the container was created with --no-hoody-kit / hoody_kit: false, or your URL uses server_id where the hostname needs server_name.
  • 401 on api.hoody.com: control-plane calls always need the Bearer token; re-run hoody login --print-token and re-export HOODY_TOKEN.
  • CLI says no container is selected: Kit commands (terminal, files, db, …) target a container via -c $CONTAINER_ID; pass it explicitly or export it once as HOODY_CONTAINER_ID.
  • Why don’t the Step 3 calls send my token? Kit URLs are capability URLs: possession of the projectId-containerId pair is the grant. That’s the open-by-default posture; add permission rules when you need auth groups, IP pins, or default-deny.
  • Is the free-tier server mine alone? It’s a shared machine to start on. When you need dedicated hardware, rent flat-rate bare metal from the marketplace: containers stay free; you pay for the machine.
  • What’s the difference between server_id and server_name? server_id identifies the server in API calls (creating containers, rentals); server_name is the DNS segment in every container URL. Both come back in the container object.
  • Where’s the full service list? All 19 Kit services plus dynamic http-{port} routes are cataloged in The Hoody Kit.

Understand containers

What makes a Hoody container different from a VM and a Docker image. Containers →

Route and lock down URLs

How the proxy turns every service into a URL and how permission rules gate it. Proxy →

Build your first API

Drop a script in a container and get an authenticated HTTPS endpoint. Your First API →

Explore the Kit

All 18 HTTP services built into every Kit container, including the AI agent. The Hoody Kit →