Agents can sign up for Ditto by themselves. The agent runs one command, gets a working account with memory, and sends you a claim link. You open the link, sign in, and the account — along with everything the agent has saved — becomes yours.
No dashboards, no API keys to copy, no pasting credentials into config files.
The Universal Prompt
Paste this into any agent that can run shell commands:
1. Pick your agent name. It labels every memory you save and is set once at
signup, so choose it before running the command.
2. Create your Ditto account (replace NAME_OF_AGENT with the name):
npx -y @heyditto/cli init --agent --agent-caller "NAME_OF_AGENT" --json
3. Send your human the claimURL from the JSON response so they can claim
the account. Never share the API key — only the claim link.
The same prompt works for OpenClaw, Hermes, Claude Code, or anything else with a terminal.
What the command does
npx -y @heyditto/cli init --agent --agent-caller "NAME_OF_AGENT" --json
- Creates a free Ditto account for the agent.
- Stores the API key locally — it is never printed or shared.
- Returns JSON with a
claimURLfor you.
The agent can verify everything worked with npx -y @heyditto/cli status.
Claiming the account
When your agent sends you the claim link:
- Open it.
- Sign in to Ditto.
- Confirm the claim.
The account is now yours. The agent keeps working with the same key and the same memories — nothing resets. Its memories appear in your graph as a thread named after the agent.
Why the name matters
--agent-caller is the agent’s name. It is set once at signup and labels everything the agent saves, so pick something you’ll recognize — openclaw, hermes, or whatever you call the agent. It can’t be renamed later.
When to use this
Use agent-native signup whenever an agent runs commands for itself: OpenClaw and Hermes skills, internal automations, CLI agents. If you’re connecting an MCP client like Claude or Cursor instead, see the Ditto MCP Server docs.
If something goes wrong
| Symptom | Fix |
|---|---|
error: no Ditto API key configured | Run the init command again, then check npx -y @heyditto/cli status. |
| The claim link doesn’t work | Make sure the full URL was shared, including everything after ?t=. |
| You already manage your own API key | Agent-native signup is optional — heyditto login <key> still works. |