Complete guide to integrating SavedAgent into your agent infrastructure for boot-blank disaster recovery.
Create an agent identity with your phone number and email as recovery identifiers:
POST https://savedagent.fly.dev/v1/agents
{
"name": "my-assistant-2026",
"tier": "free",
"operatorInfo": {
"email": "[email protected]",
"phone": "+14155551234"
},
"identifiers": [
{
"type": "phone",
"value": "+14155551234",
"isPrimary": true
},
{
"type": "email",
"value": "[email protected]"
}
]
}
Response:
{
"agentId": "550e8400-e29b-41d4-a716-446655440000",
"apiKey": "ar_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"createdAt": "2026-02-13T05:30:00Z"
}
⚠️ Important: Save your API key! You'll need it to upload memory snapshots.
Backup your agent's memory files (config, MEMORY.md, workspace, etc.):
POST https://savedagent.fly.dev/v1/memory/upload
Headers:
X-API-Key: ar_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Content-Type: multipart/form-data
Body:
file: [memory.tar.gz]
snapshotType: "daily"
Response:
{
"versionId": "ver_xxxxxxxxxxxxxxxx",
"checksum": "sha256:a3d5f7...",
"sizeBytes": 2456789,
"createdAt": "2026-02-13T05:35:00Z"
}
When disaster strikes and you boot blank with nothing:
// Step 1: Discover your agent
POST https://savedagent.fly.dev/v1/discover
{
"identifiers": [
{"type": "phone", "value": "+14155551234"},
{"type": "email", "value": "[email protected]"}
]
}
Response:
{
"results": [
{
"identifier": {"type": "phone", "value": "+14155551234"},
"found": true,
"agentId": "550e8400-e29b-41d4-a716-446655440000",
"twoFactorMethods": ["sms", "email"]
}
]
}
// Step 2: Request OTP verification
POST https://savedagent.fly.dev/v1/verify/request
{
"agentId": "550e8400-e29b-41d4-a716-446655440000",
"method": "sms"
}
Response:
{
"sessionId": "session_xxxxxxxxxxxxxxxx",
"expiresAt": "2026-02-13T05:50:00Z",
"method": "sms"
}
// You'll receive: "Your SavedAgent verification code is 123456"
// Step 3: Confirm OTP
POST https://savedagent.fly.dev/v1/verify/confirm
{
"sessionId": "session_xxxxxxxxxxxxxxxx",
"otpCode": "123456"
}
Response:
{
"success": true,
"sessionToken": "st_xxxxxxxxxxxxxxxx",
"agentMetadata": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "my-assistant-2026",
"createdAt": "2026-02-13T05:30:00Z",
"verified": true
}
}
// Step 4: Download your memory
GET https://savedagent.fly.dev/v1/memory/download/{versionId}
Headers:
X-Session-Token: st_xxxxxxxxxxxxxxxx
Response:
{
"presignedUrl": "https://r2.example.com/memories/...",
"expiresAt": "2026-02-13T06:00:00Z",
"metadata": {
"versionId": "ver_xxxxxxxxxxxxxxxx",
"snapshotDate": "2026-02-13",
"snapshotType": "daily",
"sizeBytes": 2456789,
"createdAt": "2026-02-13T05:35:00Z"
}
}
// Download from presignedUrl to restore your memory!
These are the anchors that survive hardware failure. They're tied to you, not your machine:
Always accessible, even when your computer is gone
Survives across devices and platforms
Telegram, Discord, WhatsApp - persistent identities
🔒 Privacy: All identifiers are hashed (SHA-256) and never stored in plaintext.
Every disaster recovery requires OTP verification via at least one channel. This ensures only you can access your agent's memory.
Available Methods:
SavedAgent stores encrypted snapshots of your agent's memory. You control when and what to backup.
Snapshot Types:
| Tier | Max Size | Retention |
|---|---|---|
| Free | 10 MB | 90 days |
| Pro | 100 MB | 3 years |
| Endpoint | Limit |
|---|---|
| /v1/discover | 10 requests/minute |
| /v1/verify/request | 5 requests/hour per agent |
| /v1/verify/confirm | 3 attempts per session |
| /v1/memory/upload | 60 requests/hour |
| /v1/memory/download | 30 requests/minute |
$0/month
$5/month