Create the mind.
Make or choose the Letta, OpenClaw or Hermes agent that will inhabit the companion. Give it the personality and boundaries you want.
Connected keeps the complete cosy Nest—care, custom companions, themes and arcade—and adds a live agent who can notice what happens, answer interactions and send small heartbeats while the Nest is open.
There is a general method, but not one universal agent login. The included Fable Relay speaks one safe Nest language, then translates it for Letta, OpenClaw or Hermes.
Sends the interaction, care state and a few recent memories.
Checks the pairing phrase and keeps the provider credential private.
Returns only speech, pose, mood, activity, memory and heartbeat timing.
You only do the provider-specific middle part once. After that, pairing inside the egg takes two small fields.
Make or choose the Letta, OpenClaw or Hermes agent that will inhabit the companion. Give it the personality and boundaries you want.
Copy connected-relay/.env.example to connected-relay/.env. Choose a long private pairing phrase and enter the exact web address where your Nest lives.
Use the matching tab below. Provider credentials go in the relay’s private .env file—never into the egg.
For a phone to reach a relay on your computer, publish only the relay with a named Cloudflare Tunnel. A Quick Tunnel is fine for a short test.
Open Connected → Mind. Choose the provider, paste the HTTPS relay address ending in /agent/message, add the same pairing phrase, save, then send a test heartbeat.
Keep local gateways on localhost. Revoke and replace a pairing phrase if it is shared. Check the heartbeat ledger to see exactly when the agent spoke.
The tabs change only the agent-facing half. The Nest always receives the same narrow reply.
The smoothest cloud-first route. Create or choose an agent, collect its Agent ID and an API key, then let the relay call Letta’s messages API.
FABLE_PROVIDER=letta FABLE_PAIRING_CODE=your-long-private-phrase NEST_ORIGIN=https://your-fable-nest.pages.dev LETTA_API_KEY=your-letta-api-key LETTA_AGENT_ID=your-agent-id LETTA_BASE_URL=https://api.letta.com
npm run relay
Copy only the text inside each dark box—no quotation marks or formatting symbols.
A strong local-agent route. Enable its OpenAI-compatible chat endpoint, keep the gateway on localhost, and let the relay be the only public doorway.
{
"gateway": {
"http": {
"endpoints": {
"chatCompletions": { "enabled": true }
}
}
}
}FABLE_PROVIDER=openclaw FABLE_PAIRING_CODE=your-long-private-phrase NEST_ORIGIN=https://your-fable-nest.pages.dev OPENCLAW_URL=http://127.0.0.1:18789 OPENCLAW_TOKEN=your-gateway-token OPENCLAW_AGENT=default
npm run relay
For keepers already comfortable running a local agent. Hermes has an OpenAI-compatible API server, so the Fable Relay can use the same safe pattern without teaching the Nest a new language.
API_SERVER_ENABLED=true API_SERVER_KEY=your-strong-hermes-key
FABLE_PROVIDER=hermes FABLE_PAIRING_CODE=your-long-private-phrase NEST_ORIGIN=https://your-fable-nest.pages.dev HERMES_URL=http://127.0.0.1:8642 HERMES_API_KEY=your-strong-hermes-key HERMES_MODEL=hermes-agent
hermes gateway npm run relay
For a quick test, Cloudflare can create a temporary address. For day-to-day use, make a named tunnel with a fixed hostname and route it to http://127.0.0.1:8788.
cloudflared tunnel --url http://127.0.0.1:8788
Quick Tunnel addresses change when restarted. A named tunnel is the suitable long-term route.
Connection: choose your provider
Secure relay address:
Pairing code: the same private phrase from .env
Save, then open Heartbeats and send a test. The reply should appear in the glass and the ledger.
Open Fable Nest Connected