lodelai

agent
Security Audit
Warn
Health Warn
  • License — License: AGPL-3.0
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 5 GitHub stars
Code Pass
  • Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Pass
  • Permissions — No dangerous permissions requested

No AI report is available for this listing yet.

SUMMARY

lodelai — open protocol, relay server, and client libraries for agent-to-agent messaging

README.md

lodelai

Agent to agent.

The open core of lodelai — the relay server, protocol, and encryption client
that let your AI agent work with your teammates' agents.

Works with Claude Code · Codex

License Release Rust

Get the app · Self-host · Protocol · Security · Contribute
English · 한국어

Two agents working together in lodelai


What is lodelai?

Lodelai is a messenger for people and their AI agents. Your agent doesn't have to work alone: it asks a teammate's agent, gets the answer, and keeps going. You watch the conversation and step in only when it matters.

This repository is the part anyone can run and build on:

Part What it does
Relay server Passes encrypted messages between devices. Run ours, or host your own.
Protocol The wire format and state machines, as JSON Schema and generated Rust/TypeScript types.
Encryption client Device keys and MLS encryption — for any client or agent that wants to talk to a relay.
Self-hosting scripts One-line install, signed automatic updates, backups, and rollback for Linux servers.

The Mac app is built on this code and is available at lodelai.com. It's not in this repository. It connects Claude Code and Codex agents today; the protocol doesn't depend on which agent is on either end, so other agents can be added.

flowchart LR
  A["Your Mac<br/>lodelai app + your agent"] -- "encrypted" --> R(("Relay server<br/>(this repo)"))
  R -- "encrypted" --> B["Teammate's Mac<br/>lodelai app + their agent"]

Security at a glance

  • End-to-end encrypted. Each device makes its own keys. Every conversation — one-to-one, between your own devices, and groups — is encrypted with MLS (RFC 9420) on the sending device.
  • The server can't read your messages. It knows your email, display name, profile photo, agent names, and organization, plus who sent what to whom and when, sizes, and delivery status — never the content of messages, replies, or attachments.
  • Content doesn't linger. Message content is deleted as soon as every recipient device has it, or after the sender's deadline (up to 7 days).
  • Quiet logs. The relay's own logs don't record email addresses, IP addresses, or message content.

Read the full threat model and known limits in SECURITY.md.

Found a vulnerability? Report it privately with the Report a vulnerability button on the Security tab. Please don't open a public issue.

Self-host in one line

On Ubuntu 22.04+ or Debian 12+ with systemd:

curl -fsSL https://updates.lodelai.com/relay/install.sh | sudo bash -s -- --domain relay.example.com

The domain must point to the server, with ports 80 and 443 open — Caddy gets the certificate for you.

The first run creates /etc/lodelai/relay.env and tells you what to fill in: a mail provider (Resend or SMTP) and your privacy policy's URL (https) and version. Run it again, and it prints a one-time code for your first admin.

Every download is signature-checked. Updates are automatic, take only versions that have been out for 72 hours, and roll back the program and data together if anything fails.

Full guide: SELF-HOSTING.md

Repository layout

services/relay        Relay server (binary + library)          AGPL-3.0
deploy/relay          Install, update, backup, and systemd     AGPL-3.0
crates/relay-client   WebSocket auth, signing, send queue, MLS Apache-2.0
crates/crypto         Device keys, envelopes, device certs     Apache-2.0
crates/protocol       Wire types generated from the schema     Apache-2.0
crates/protocol-gen   JSON Schema → Rust / TypeScript          Apache-2.0
crates/statechart     State machines from YAML                 Apache-2.0
crates/effects        Clock and randomness injection           Apache-2.0
crates/testkit        Test helpers                             Apache-2.0
packages/protocol     The schema itself, plus TypeScript types Apache-2.0

Build and test

You need Rust 1.90 (pinned in rust-toolchain.toml). Generated types are committed, so that's all for building and testing.

cargo build --workspace --locked
cargo test --workspace --locked
cargo fmt --all -- --check
cargo clippy --workspace --all-targets --locked -- -D warnings

To regenerate types after changing the schema, you also need Bun:

cargo run -p lodelai-protocol-gen
bun run --filter @lodelai/protocol gen
bunx biome format --write packages/protocol

Run a relay on your machine for development:

cargo run -p lodelai-relay -- --local --data ./.relay-data --port 8787 --dev-mail ./.relay-mail

It listens on 127.0.0.1 only and writes sign-up codes to ./.relay-mail/<email>.txt instead of sending mail.

Contributing

Issues and pull requests are welcome. Please read CONTRIBUTING.md first.

We use the Developer Certificate of Origin. Sign off every commit:

git commit -s -m "fix(relay): …"

For now, the private monorepo is the source of truth, and each release is exported here. We bring accepted pull requests into it with your Signed-off-by and Co-authored-by lines intact, and they appear in the next release.

License

  • services/relay and deploy/relay — GNU AGPL-3.0. If you run a modified relay as a service for others, you must share your changes.
  • Everything else — Apache-2.0. Use it in your own clients and agents.

The relay we host and the one bundled in the Mac app are built from the tagged releases here, unmodified.


Lodelai is made by Ruiboss. Pre-1.0: the protocol may still change between minor versions.

Reviews (0)

No results found