Skip to content

An agent for your life. A runtime for yours.

PAL answers your iMessage and WhatsApp as you, and holds anything that commits you until you say yes. PAL Runtime runs your own agents: durable, budgeted and sandboxed, on your laptop or in your cloud.
PAL runs on PAL RuntimeStep through a reply PAL sends, one it holds, and a run of your own agent.
A contact writesiMessage · WhatsAppYour agent codeSDK · CLI · RESTPAL bridgeon your MacPAL Runtimesessions · runs · journalModel callyour keys · failoverGatesmoney · dates · griefSent as youpaced like youHeld for youpage to self-chatmicroVMegress allowlist
Swipe sideways to pan.

1. A contact writes

The bridge on your Mac picks up the message from iMessage or WhatsApp.

  • pal
  • PAL Runtime
  • Sent
  • Held

The problem

Agents that act are easy to start and hard to trust.

Section titled “Agents that act are easy to start and hard to trust.”

01 · A reply can commit you

An agent writing as you can promise money, confirm a date it never checked, or answer bad news in the wrong tone. Sounding like you is the easy part.

02 · A crash spends twice

A process dies mid-run and the run starts over: the model is billed again and the email goes out twice. Retries are not durability.

03 · Agent code is untrusted code

Tools run code the model chose, fetch from the internet and hold your keys. A loop with no cap runs until the invoice arrives.

PAL · for you

It brings you what matters. It waits on what is risky.

Section titled “It brings you what matters. It waits on what is risky.”

PAL runs on your Mac next to iMessage and WhatsApp. Ordinary replies go out in your voice, paced like you. A reply that promises money, states a date it cannot verify or claims something only you could confirm is held and sent to your self-chat. Step through what happens to one held reply:

Holds: gates at the send boundaryBefore a reply leaves in your voice, two gates can hold it for you. Each is a model judgment plus a deterministic backstop, so an outage cannot fail open.
Contact messageReply draftCommitment gatemoney · promisesGrounding gatecan't verify → holdSentHELD for you⚠️ page to self-chatYour one linebecomes the reply
Swipe sideways to pan.

1. A contact writes

Any ordinary message.

  • Gate: model + backstop
  • Held
  • Sent

How PAL works · Holds and trust · Privacy and control

PAL Runtime · for builders

PAL is built on PAL Runtime, and your agents get the same platform. Every step is journaled, so a crash resumes instead of restarting. Budgets are checked before the model is called, so a hard cap costs nothing. Untrusted code runs in a microVM with an egress allowlist, and models are addressed by capability, not by vendor name.

PAL Runtime: system contextWho calls PAL, the control plane that decides, and the data plane in your VPC that runs the work. Step through a call, or hover any box.
DeveloperCLI · SDKsCallersREST · SSE · A2AModel providersOpenAI · Anthropic · …pal surfacesiMessage · WhatsAppConsoleNext.js :3001GatewayRust :8443Control planeGo :8080 · gRPC :50051Model routerRust :50053Surface gateway:8444 webhooksScheduler · billingGoData-plane agentoutbound tunnelWorkflow engineGo :50052Runtime schedulerGo :50055Runtime managerRust :50054microVMsFirecracker + harnessPostgrespgvector · RLSRediscache · pub/sub · locksS3 / MinIObundles · snapshots
Swipe sideways to pan.

1. A call arrives at the gateway

From the CLI, an SDK, the console or another agent. TLS and authentication happen here, once.

  • PAL Runtime services
  • Trusted host code
  • Untrusted code
  • Data stores
  • Outside PAL

How PAL Runtime works · Durable execution · Security model

Quickstart

Every path starts from a checkout. Install lists the prerequisites (Docker, Node.js 22, Go 1.26).

Terminal window
git clone https://github.com/dshakes/pal.git && cd pal
(cd packages/cli && go build -o "$(go env GOPATH)/bin/pal" ./cmd/pal)

The whole platform on Docker, with recorded model answers. Each visitor gets a throwaway workspace that expires after 30 minutes.

Terminal window
$ pal demo # Docker builds the images (slow the first time)
…
Container pal-demo-dashboard-1 Started
demo ready in 1m15s: http://localhost:3001/kiosk
$ pal demo --down # stop it and delete its volumes
…
demo stopped, data deleted

Next: Try it: the demo.

Measured, not claimed

Real Firecracker microVMs, medians of 20 or more runs, from the committed runtime latency benchmark. They were measured under nested virtualization on a laptop, so compare changes with them; they are not production SLOs.

Operation p50
Spawn a microVM (RPC returns) 143 ms
Exec round trip in a warm VM 115 ms
Restore a paused VM (RPC returns) 131 ms
Restore, then first exec answered 2,491 ms
Egress request refused by the broker 32 ms

How the numbers move a sandbox through pause, resume and fork: Sandbox lifecycle.

For the people who say no

In production, a missing guard stops the service.

Section titled “In production, a missing guard stops the service.”

The chart sets the environment to production. From then on these refuse to start, rather than run without the guard:

Missing What refuses
Shared service token (PAL_GRPC_SERVICE_TOKEN) The control plane, and every internal gRPC service that checks it
Encryption key for stored credentials (PAL_CREDENTIAL_KEY) The control plane
Restricted database role for row-level security (PAL_APP_DB_PASSWORD) The control plane, unless you opt out with PAL_RLS_ENFORCE=0
TLS certificate and key (PAL_TLS_CERT, PAL_TLS_KEY) The gateway
The firewall rule that forces sandbox egress through the allowlist, when egress rules are declared The workload inside the microVM

Each boundary and what it demands: Security model and Security boundaries.

Pick your path

Read the docs in order, or jump to your part.

Section titled “Read the docs in order, or jump to your part.”
You want to Read, in order
Know what this is What PAL is
Use PAL on your own messages How PAL works → Set up PAL → Holds and trust → Daily use → Build your own personal agents → Privacy and control
Build an agent What PAL Runtime is → Quickstart in 60 seconds → Your first agent → Agents
Test it, then ship it Evaluations → Promotion → Deploy to your cloud
Run it in production Observability → Debugging and support → Operations → Upgrading
Secure it Security model → Agent identity and policy → Accounts and teams
Look something up REST API · CLI · SDKs · Environment variables