Quickstart in 60 seconds
This is the fastest look at PAL Runtime. Pick the no-key demo if you have nothing but Docker, or run one command to get a real agent on your own key. Both need the pal CLI from a checkout (Install); the first Docker build takes a few minutes, then each command takes seconds.
| Path | You need | First command | Takes you to |
|---|---|---|---|
| No key | Docker | pal demo |
Try it: the demo |
| Your key | Docker, Node 22, Go, a provider key | pal onboard |
Your first agent |
| Your code | The stack from the row above, an API key | An SDK call | SDKs |
-
Start the demo. It answers from recorded replays.
Terminal window pal demoLast lines of a real run Container pal-demo-dashboard-1 Starteddemo ready in 1m15s: http://localhost:3001/kioskThe first run builds the images and takes minutes; later starts reuse them.
-
Open
http://localhost:3001/kiosk. You get a private workspace with sample agents. -
Stop it and delete its data.
Terminal window pal demo --downLast lines of a real run Volume pal-demo_pg-data RemovedNetwork pal-demo_default Removeddemo stopped, data deleted
-
Boot the local stack (Postgres, Redis, MinIO, the API on
:8080, the dashboard on:3001).Terminal window pal dev -
In a second terminal, describe an agent in one sentence. PAL designs a spec, test-calls your key, creates the agent and streams its first run.
Terminal window pal onboard --yes --provider anthropic --api-key "$ANTHROPIC_API_KEY" \--description "Turn meeting notes into a summary with action items"A real run on a fresh database (model text in <…>) PAL onboard — let's get you set up.────────────────────────────────────────────────1. Health check ... ✓2. Authentication ... ✓ dev login (<dev account>)3. LLM provider ... ✗ none configured3. LLM provider ... ✓ anthropic4. Agent ... ✓Proposed agent: <name>…✓ created <name>5. First run ... ✓ run <run-id> startedstreaming events:… # one started/completed line per step────────────────────────────────────────────────You're set.Agent output:<the agent's answer>Dashboard: http://localhost:3001/runs/<run-id> -
Run it again with your own input.
Terminal window pal runs create --agent <name-it-printed> --input '{"notes":"..."}' --stream
Your first agent explains each step and the browser version.
With the stack from the previous tab running and an API key from Settings > API keys:
import { PalClient } from "@pal-runtime/sdk";
const client = new PalClient({ baseUrl: "http://localhost:8080", apiKey: process.env.PAL_API_KEY });const run = await client.runs.create({ agent: "my-agent", input: { notes: "..." } });for await (const e of client.runs.events(run.id)) console.log(e.kind);from pal import PalClient
async with PalClient(base_url="http://localhost:8080") as client: run = await client.runs.create(agent="my-agent", input={"notes": "..."}) async for e in client.runs.events(run.id): print(e)import pal "github.com/dshakes/pal/packages/sdk-go"
c := pal.New(pal.WithBaseURL("http://localhost:8080"))r, err := c.CreateRun(ctx, pal.RunOptions{AgentName: "my-agent", Input: map[string]string{"notes": "..."}})curl -s -X POST localhost:8080/v1/runs -H "Authorization: Bearer $PAL_API_KEY" \ -d '{"agentName":"my-agent","input":{"notes":"..."}}'Install notes for each SDK are in SDKs. Pass baseUrl explicitly: the SDK default does not resolve.
Check your setup
Section titled “Check your setup”pal doctorEach check prints one pass or fail line and, for a failure, the fix. When every check passes, the last line is doctor: all checks passed — stack is ready (doctor.go).
Troubleshooting
Section titled “Troubleshooting”| You see | Cause and fix |
|---|---|
docker is required |
The CLI could not run docker. Start Docker Desktop, or sudo systemctl start docker on Linux, then retry. |
run `pal demo` from inside a PAL checkout |
pal demo reads the compose files from the repo. cd into the clone. |
waiting for http://localhost:8080/healthz times out |
A container did not become healthy, usually a port already in use. Inspect it with docker compose -p pal-demo logs, or override with KIOSK_API_PORT or KIOSK_WEB_PORT. |
pal: command not found |
$(go env GOPATH)/bin is not on your PATH. Add export PATH="$PATH:$(go env GOPATH)/bin" to your shell profile. |
Next: Your first agent.