Self-hosting
Self-hosted Lambda tracing
Ivy is open source under the MIT license, and the hosted service at ivytrace.dev runs the same images you can run yourself. docker compose up starts the OpenTelemetry Collector, ClickHouse, the API, the dashboard and the MCP server. Self-hosted Ivy has no limits and no payment code, and your traces never leave your servers.
One command
git clone https://github.com/ivytrace/ivy && cd ivy
docker compose -f deploy/docker-compose.yml up -d --build
- Dashboard, API and MCP server on
http://localhost:3000 - OTLP/HTTP ingest on
http://localhost:4318
The full guide, with environment variables, sign-in and AWS setup, is in the self-hosting docs.
What runs
| Service | Role |
|---|---|
| Ingest router | Checks the ingest key and decides which workspace and project the spans belong to |
| OpenTelemetry Collector (contrib) | Batches spans with a persistent on-disk queue and writes them to ClickHouse |
| ClickHouse | Stores spans, one row per invocation for fast search, and hourly rollups |
| API | The HTTP API, the dashboard and the MCP server |
The backend needs no AWS services. It only needs network access to the AWS API if you want it to attach the layer to your functions (auto-trace), and your functions need to reach its ingest endpoint.
Same features as hosted
- The dashboard, MCP server (including MCP Apps views) and HTTP API.
- Auto-trace through a cross-account role, or attach the layer yourself.
- Workspaces, projects, members and invitations.
- Alerts: Slack and the weekly email digest, turned on with environment variables, plus an
on-error-group-createdhook for your own integrations. - Retention is yours to choose (
IVY_RETENTION_DAYS, 30 days by default).
Sign-in
Ivy uses OIDC or no auth, never passwords:
- With OIDC: register a client with Keycloak, Auth0, Okta, Entra ID, Authentik, Zitadel or another provider that issues JWT access tokens, and set
IVY_OIDC_ISSUERandIVY_OIDC_CLIENT_ID. Coding agents sign in through the same provider. - Without OIDC: the dashboard and API run open, for setups behind your own authenticating proxy, and the UI shows a permanent "authentication disabled" banner.
Ingest always needs an API key.
Hooks
Hosted-only behaviour, like billing, lives in hooks: executables in a directory, git-hooks style. Self-hosted installs can use the same mechanism, for example on-error-group-created to open a ticket, or publish-cfn-template for one-click CloudFormation links.
Hosted or self-hosted?
| Feature | ivytrace.dev | Self-hosted |
|---|---|---|
| Price | Free for 100,000 traces a month, then €5 per million | Free (MIT), plus your server |
| Operations | None | You run and upgrade it |
| Data location | Ivy's hosted service | Your servers |
| Sign-in | Email sign-in, ready to use | Your OIDC provider, or none |
| Features | Same | Same |
You can move between them at any time: point the layer's IVY_ENDPOINT and IVY_API_KEY somewhere else.