Elydora Docs

Self-Host Guide

Deploy Elydora on your own infrastructure with a single command. Full control over your data with Docker Compose.

Prerequisites

Ensure the following tools are installed on your server or local machine:

One-Command Install

Clone the repository and run the install script. It handles everything automatically:

bash
git clone https://github.com/Elydora-Infrastructure/Elydora-Open-Source.git
cd Elydora-Open-Source
./scripts/install.sh

The install script automatically:

Services

Once running, the following services are available:

ServiceURLDescription
Consolehttp://localhost:3000Web management console
APIhttp://localhost:8787REST API server
MinIO Consolehttp://localhost:9001Object storage console

Verify Installation

Check that the API is healthy:

bash
curl http://localhost:8787/v1/health

Expected response:

json
{
  "status": "healthy",
  "version": "v1",
  "protocol_version": "1.0",
  "timestamp": 1700000000000
}

Create Your First Account

Register an organization and admin user via the API or the console at http://localhost:3000/register:

bash
# Register via Better Auth
curl -X POST http://localhost:8787/api/auth/sign-up/email \
  -H "Content-Type: application/json" \
  -d '{
    "email": "admin@example.com",
    "password": "your-secure-password",
    "name": "Admin"
  }'

# Then issue an API token for SDK use
curl -X POST http://localhost:8787/v1/auth/token \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <your-session-token>" \
  -d '{"ttl_seconds": 7776000}'

Connect SDKs to Your Local Instance

Point any Elydora SDK to your local server by setting the baseUrl parameter:

typescript
import { ElydoraClient } from '@elydora/sdk';

const client = new ElydoraClient({
  orgId: 'your-org-id',
  agentId: 'my-agent',
  privateKey: process.env.AGENT_PRIVATE_KEY,
  baseUrl: 'http://localhost:8787',  // point to your local instance
});
python
from elydora import ElydoraClient

client = ElydoraClient(
    org_id="your-org-id",
    agent_id="my-agent",
    private_key=os.environ["AGENT_PRIVATE_KEY"],
    base_url="http://localhost:8787",  # point to your local instance
)

Install Agent Hooks

For AI coding agents like Claude Code, install the Elydora hook pointing to your local instance:

bash
npx @elydora/sdk install \
  --agent claudecode \
  --org_id "your-org-id" \
  --agent_id "your-agent-id" \
  --private_key "your-private-key" \
  --kid "your-key-id" \
  --token "your-api-token" \
  --base_url "http://localhost:8787"

Environment Variables

The install script generates a .env file from .env.example with the following variables. All secrets are auto-generated — you only need to edit this file if you want to customize ports, origins, or enable TSA anchoring:

bash
# PostgreSQL
POSTGRES_USER=elydora
POSTGRES_PASSWORD=<auto-generated>
DATABASE_URL=postgresql://elydora:<auto-generated>@postgres:5432/elydora

# Redis
REDIS_URL=redis://redis:6379

# MinIO (S3-compatible object storage)
MINIO_ROOT_USER=elydora
MINIO_ROOT_PASSWORD=<auto-generated>
MINIO_ENDPOINT=http://minio:9000

# Elydora API
PORT=8787
BETTER_AUTH_SECRET=<auto-generated>
BETTER_AUTH_URL=http://localhost:8787
ELYDORA_SIGNING_KEY=<auto-generated Ed25519 key>
ALLOWED_ORIGINS=http://localhost:3000

# TSA (optional — RFC 3161 timestamp authority)
TSA_URL=http://timestamp.sectigo.com

Managing Your Deployment

Common commands for managing your self-hosted Elydora instance:

bash
# Re-running is safe — secrets are preserved if .env exists
./scripts/install.sh

# Or manually restart services
docker compose up -d

# View logs
docker compose logs -f api

Next Steps