Skip to content
ferriskeyPublic

About

FerrisKey is an open-source IAM solution designed for modern cloud-native environments, high-performance and written in Rust.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

722 stars

Watchers

4 watching

Forks

Latest commit

Β 

History

935 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

FerrisKey β€” Modern Open‑Source IAM in Rust

FerrisKey β€” Open‑Source, High‑Performance Identity & Access Management
Cloud‑native β€’ Extensible β€’ Built in Rust

CI Release OpenSSF Scorecard OpenSSF Best Practices License Stars Sponsor

Sponsors

Cloud-IAM Β Β Β  France Nuage Β Β Β  Gilded Health Β Β Β  Nudibranches


✨ Why FerrisKey?

FerrisKey is a modern Identity & Access Management (IAM) platform built with Rust and a hexagonal architecture. It aims to be a serious open‑source alternative to heavyweight IAMs fast, modular, and cloud‑native by design.

  • πŸ¦€ Performance-first β€” Rust, async I/O, low latency.
  • 🧱 Hexagonal architecture β€” clean domain, clear ports/adapters.
  • 🏒 Multi‑tenant realms β€” strong isolation of users/roles/clients.
  • πŸ” Modern auth β€” OIDC/OAuth2, MFA (TOTP).
  • 🧩 Extensibility β€” native modules for MFA, auditability, and webhooks.
  • ☁️ Cloud‑native β€” official Helm chart; ready for Kubernetes.

🧭 Table of Contents

🌟 Features

Capability Details
OIDC / OAuth2 Standards‑compliant flows for modern apps & services.
Multi‑Tenant Realms Logical isolation of users, roles, clients, secrets.
Clients & Service Accounts Fine‑grained role mapping; bitwise role system.
MFA (TOTP) Pluggable strategies with required actions.
Observability Prometheus metrics, Grafana dashboards.
Kubernetes‑ready Helm chart with sane defaults; OCI distribution.

License: Apache‑2.0. No paywalls. Community‑first.

πŸš€ Quick Start

For local development using the repo justfile, see DEVELOPMENT.md.

Option A β€” Using latest Docker image

docker compose --profile registry up -d

Then visit http://localhost:5556 to access the console. The default credentials are admin and admin.

Option B β€” Re-build Docker image

docker compose --profile build up -d

Important migration note (Postgres 18+ volume path): local compose mounts pgdata at /var/lib/postgresql (the Postgres 18+ recommended mount point). If you are migrating from an older local setup that used a different mount path, remove or migrate the old volume first. Quick reset (destructive): docker compose down -v.

Then visit http://localhost:5555 to access the console. The default credentials are admin and admin.

Option C β€” Helm (Kubernetes)

Requires a reachable Postgres (or include it via your platform’s recommended operator).

See chart documentation.

Option D - Cargo

  1. Clone the repo
git clone https://github.com/ferriskey/ferriskey
  1. Launch the database and execute migrations with sourced env variables
cd api
cp env.example .env
# feel free to change the env variables in .env to your liking.
docker compose up -d
cd ../core
# to install sqlx you might need to run `cargo install sqlx-cli --no-default-features --features postgres`
DATABASE_URL=postgres://ferriskey:ferriskey@localhost:5432/ferriskey sqlx migrate run
  1. Launch the API
# to upgrade rustc version to 1.89.0, you can run `rustup update`
cd ../api
cargo run
  1. Launch the frontend (optional)
cd ../front
cp .env.example .env
pnpm install
pnpm run dev

Then visit http://localhost:5555 to access the console. The default credentials are admin and admin.

βš™οΈ Configuration

Common environment variables (example):

PORT=3333
ENV=development
LOG_LEVEL=info
DATABASE_URL=postgres://ferriskey:ferriskey@localhost:5432/ferriskey

ADMIN_PASSWORD=admin
ADMIN_USERNAME=admin
ADMIN_EMAIL=admin@ferriskey.rs

ALLOWED_ORIGINS=http://localhost:5555

ALLOWED_ORIGINS lists the origins accepted on every route. Beyond it, each client declares its own web origins at runtime, enforced per realm β€” see the web-origins endpoints under a client. Those per-client origins never replace ALLOWED_ORIGINS: /config, the health probes and the API docs carry no realm, so an admin console served from a different origin than the API must keep its origin in ALLOWED_ORIGINS.

By default, the API will listen on port 3333 and the frontend on port 5555.

πŸ—„οΈ Database Migrations

FerrisKey uses SQLx for database migrations. To apply pending migrations:

cd core
DATABASE_URL=postgres://ferriskey:ferriskey@localhost:5432/ferriskey sqlx migrate run

To check migration status:

DATABASE_URL=postgres://ferriskey:ferriskey@localhost:5432/ferriskey sqlx migrate info

Note: If you have DATABASE_URL set in your environment or .env file, you can omit it from the command.

🧩 Modules

  • Trident β€” MFA & security scopes TOTP, WebAuthn, Magic Link; flexible required actions.

  • SeaWatch β€” Observability & audit logs Security event trails; queryable from the console; exportable.

  • Webhooks β€” Event‑driven extensibility Subscribe to user/client/realm lifecycle events without forking core.

πŸ—οΈ Architecture

FerrisKey follows a Hexagonal Architecture (Ports & Adapters) to keep business logic pure and infrastructure replaceable.

πŸ“ˆ Observability

  • Metrics: /metrics (Prometheus format)
  • Dashboards: Starter Grafana dashboards included in Helm values (optional)

πŸ—ΊοΈ Roadmap

The public roadmap is at https://ferriskey.rs/roadmap. ROADMAP.md lists the epics in progress and how the roadmap is maintained.

🏒 Adopters

Organizations using FerrisKey are listed in ADOPTERS.md. If you run FerrisKey, add yourself with a pull request.

🀝 Contributing

We welcome contributions of all kinds bugfixes, features, docs, testing.

  1. Read CONTRIBUTING.md
  2. Pick an issue (good first issues labelled)
  3. Open a PR with tests and a concise description

Join discussions to help shape modules, APIs, and UX.

🫱 Code of Conduct

FerrisKey follows the CNCF Code of Conduct. See CODE_OF_CONDUCT.md for scope and how to report an incident.

πŸ” Security

Report vulnerabilities privately through the Security tab, never in a public issue. Supported versions, response targets and the disclosure process are in SECURITY.md.

πŸ“œ License

Apache‑2.0 β€” free to use, modify, and distribute.

πŸ”— Links

About

FerrisKey is an open-source IAM solution designed for modern cloud-native environments, high-performance and written in Rust.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

722 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages