
# Elydora
**The Responsibility Layer for AI Agents**
Tamper-evident audit trails with cryptographic proof for every AI agent action.
[](https://github.com/Elydora-Infrastructure/Elydora-Open-Source)
[](LICENSE)
[](sdks/node/)
[](sdks/python/)
[](sdks/go/)
[](https://github.com/Elydora-Infrastructure/Elydora-Open-Source/actions)
[](https://elydora.com)
[Website](https://elydora.com) · [Quick Start](#quick-start) · [Documentation](#documentation) · [API Reference](#api-reference) · [SDKs](#sdks) · [Contributing](#contributing)
---
## What is Elydora?
Elydora is an open-source **responsibility protocol for AI agents**. When an AI agent takes an action — reading a file, calling an API, modifying a database, sending a message — Elydora captures a cryptographically signed, tamper-evident record of that action. These records are chain-hashed together to form an unforgeable audit trail, then rolled up into Merkle tree epochs anchored to public timestamp authorities.
The result is a complete, verifiable history of everything your AI agents have ever done, that no one — not even the platform operator — can silently alter.
**Core protocol features:**
- **Ed25519 signed operation records (EOR)** — every agent action is signed with the agent's private key before leaving the agent's process
- **Chain-hashed audit trails** — each record cryptographically commits to the previous record, making silent insertion, deletion, or reordering detectable
- **Merkle tree epoch rollups with TSA anchoring** — periodic epochs hash all records into a Merkle tree whose root is anchored via RFC 3161 Trusted Timestamping
- **Multi-tenant with RBAC** — fine-grained role-based access control with five distinct roles from read-only investigator to organization owner
- **Compliance exports (JSON / PDF)** — one-click export of the complete audit trail for any time range, agent, or operation type
---
## Architecture
```
┌─────────────────────────────────────────────────────────────────┐
│ AI Agent Process │
│ │
│ ┌──────────────┐ createOperation() ┌──────────────────┐ │
│ │ Agent Logic │ ─────────────────────▶│ Elydora SDK │ │
│ │ │◀───────────────────── │ (Node/Python/Go)│ │
│ └──────────────┘ submitOperation() └────────┬─────────┘ │
│ │ Signs EOR │
│ │ (Ed25519) │
└───────────────────────────────────────────────────┼─────────────┘
│ HTTPS
▼
┌──────────────────────────────────────────────────────────────────┐
│ Elydora API Server │
│ │
│ ┌───────────────┐ ┌───────────────┐ ┌──────────────────┐ │
│ │ Auth / RBAC │ │ Verify EOR │ │ Epoch Rollups │ │
│ │ Middleware │ │ (signature + │ │ (Merkle trees + │ │
│ │ │ │ chain hash) │ │ TSA anchoring) │ │
│ └───────────────┘ └───────────────┘ └──────────────────┘ │
│ │ │ │ │
└───────────┼──────────────────┼─────────────────────┼────────────┘
│ │ │
┌──────▼──────┐ ┌───────▼────────┐ ┌───────▼──────────┐
│ PostgreSQL │ │ Object Store │ │ Redis │
│ (metadata + │ │ (payloads + │ │ (nonce cache + │
│ chain) │ │ receipts + │ │ rate limits) │
│ │ │ exports) │ │ │
└──────────────┘ └────────────────┘ └──────────────────┘
```
---
## Quick Start
### Prerequisites
- Docker 24+
- Docker Compose v2.20+
### One-Command Deploy
```bash
git clone https://github.com/Elydora-Infrastructure/Elydora-Open-Source.git
cd Elydora-Open-Source
# One-click install — generates all secrets and starts every service
./scripts/install.sh
```
The install script automatically:
1. Checks prerequisites (Docker, Docker Compose, OpenSSL, curl)
2. Generates a `.env` with fresh cryptographic secrets (Ed25519 signing key, Better Auth secret, database and object-store passwords)
3. Starts all services via `docker compose up -d`
4. Waits for the API to become healthy
Once complete, open:
| Service | URL |
|---------|-----|
| Console | http://localhost:3000 |
| API | http://localhost:8787 |
| MinIO Console | http://localhost:9001 |
> **Re-running is safe.** If `.env` already exists, the script skips secret generation and only restarts services.
### Kubernetes Deploy
```bash
helm install elydora ./helm/elydora \
--namespace elydora \
--create-namespace \
-f values.yaml
```
---
## Project Structure
```
Elydora-Open-Source/
├── packages/
│ ├── server/ # Elydora API server
│ └── console/ # Next.js web management console
├── sdks/
│ ├── node/ # @elydora/sdk — Node.js / TypeScript SDK
│ ├── python/ # elydora — Python SDK (sync + async)
│ └── go/ # github.com/Elydora-Infrastructure/Elydora-Go-SDK/v2
├── helm/
│ └── elydora/ # Kubernetes Helm chart
├── scripts/ # Key generation, migration, and utility scripts
├── CONTRIBUTING.md
├── LICENSE
└── README.md
```
| Package | Description |
|---------|-------------|
| `packages/server` | The core API server. Handles EOR ingestion, signature verification, chain validation, RBAC, epoch rollups, and compliance exports. |
| `packages/console` | A web-based management console for viewing agents, browsing the audit trail, managing exports, and administering users. |
| `sdks/node` | TypeScript SDK with full type coverage. Ships a CLI (`elydora`) and a programmatic client. Supports plugin hooks for popular AI coding agents. |
| `sdks/python` | Python SDK with both synchronous (`ElydoraClient`) and asynchronous (`AsyncElydoraClient`) clients. Requires Python 3.9+. |
| `sdks/go` | Go SDK with idiomatic error handling. Ships a CLI binary and embeds zero external runtime dependencies. |
| `helm/elydora` | Production-ready Helm chart for Kubernetes deployments with configurable replicas, resource limits, and secret management. |
---
## Documentation
### Registration and Authentication Flow
```
1. Register organization and first user (Better Auth)
POST /api/auth/sign-up/email → { user, session }
2. Log in to retrieve a session token (Better Auth)
POST /api/auth/sign-in/email → { user, session }
3. Issue a long-lived API token for SDK use
POST /v1/auth/token → { token, expires_at }
Header: Authorization: Bearer