Designed for local-first applications.
Collect data from anywhere, anytime.
Your apps run locally — but data comes from everywhere. Telegram bots, webhooks, IoT sensors, mobile shortcuts.
Relay bridges this gap. It's a message queue that holds your data in the cloud until your local app is ready to process it.
Webhook fails when your device is offline. Data lost.
Webhook queued. Delivered when you're back online.
HTTP in. Script or HTTP out. Your choice.
curl -X POST https://api.eidos.space/v1/relay/channels/daily-log/messages \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"body": {
"text": "Buy groceries from supermarket"
}
}' // In Eidos Desktop
export const meta = {
type: "relayHandler",
funcName: "handleDailyLog",
relayHandler: {
name: "Daily Log",
channel: "daily-log"
}
}
export async function handleDailyLog(batch) {
const date = new Date().toISOString().split('T')[0]
const filePath = "~/notes/${date}.md"
for (const message of batch.messages) {
const entry = `- [ ] ${message.body.text}\n`
try {
const existing = await eidos.space.fs.readFile(filePath, 'utf-8')
await eidos.space.fs.writeFile(filePath, existing + entry)
} catch {
await eidos.space.fs.writeFile(filePath, entry)
}
}
} Send quick notes from your phone. Append to daily markdown files automatically.
Save URLs from any app. Process metadata and store in your local knowledge base.
Sensor data from edge devices. Batch process when your analysis station is ready.
Github, Stripe, Slack events. One endpoint, batch processing.
HTTP POST from anywhere — curl, webhook, mobile apps.
Messages stored in cloud buffer. Device can be offline.
Your app pulls in batches when ready. Or via HTTP API.
Handle in Eidos script or your own code. Full control.