Skip to content

Boring where it counts, built to last.

You do not need any of this to use Autharie. It is here for the engineers and auditors who want to know what runs their sign in.

Standard pieces, assembled and looked after

Kubernetes
Rust
PostgreSQL
OpenID Connect
Argo CD
Let's Encrypt
S3 storage
OpenBao

Rules for agents, as blocks or as code

Who, under which conditions, what it may do and what it may never do: a rule is checked on every action. Build it with blocks, or let your tech team keep it as code. Every decision is recorded end to end.

Preview

It tries to refund an order: the conditions are true, but the rule never allows refunds. Blocked, and recorded.

Written in Rust

Ferriskey is written in Rust, and so is everything Autharie adds on top of it. A control plane that exposes the API, an operator that looks after instances, and the agent that runs in your cluster.

Fast and light

The control plane, the operator and the data plane agent are single binaries that start in milliseconds and use little memory.

Safer by construction

No garbage collector and no whole classes of memory bugs. For the service that decides who may sign in, that matters.

SQL checked at compile time

A query that does not match the schema fails the build instead of failing in production.

It is Kubernetes under there, and it shows

Every instance is a custom resource. If you already run clusters, nothing here is a surprise, and kubectl still works the way you expect.

Reconciled, not deployed once

An operator compares what the cluster has against what the resource asks for, continuously. Delete a pod and it comes back.

Console, API or manifest

The console has no private door. Everything it does goes through the same documented API, and the client is generated from it.

Written in Rust

The control plane, the operator and the data plane agent. Compile time checked SQL, and a binary that starts in milliseconds.

identityinstance.yaml autharie.fr/v1alpha
apiVersion: autharie.fr/v1alpha
kind: IdentityInstance
metadata:
  name: acme-production
spec:
  provider: ferriskey
  version: "1.4.2"
  hostname: id.acme.com
  allowedCidrs:
    - 203.0.113.0/24
  database:
    mode: managedCluster
    managedCluster:
      instances: 3
      storage:
        size: 50Gi
  backup:
    destinationPath: s3://acme-identity-archives
    encryption: "kms:acme-identity"
  ingress:
    enabled: true
    tls:
      enabled: true
      clusterIssuer: letsencrypt
$ kubectl get identityinstances
NAME              PROVIDER    VERSION   PHASE     READY   AGE
acme-production   ferriskey   1.4.2     Running   true    97d
acme-staging      ferriskey   1.4.2     Running   true    97d
internal-sso      ferriskey   1.4.1     Upgrading false   41d
helm upgrade --install autharie-dataplane charts/autharie-dataplane \
  --namespace autharie-system --create-namespace \
  --set dataplane.id=dp_8f2a41 \
  --set controlPlane.url=https://api.autharie.fr \
  --set controlPlane.auth.clientId=$CLIENT_ID \
  --set controlPlane.auth.clientSecret=$CLIENT_SECRET

Our clusters, or a machine you already own

The same platform on either side of the line. Start on ours because it is quicker, move to yours when a policy says the database has to stay home.

Register a cluster with one chart

Install the agent on a k3s or Kubernetes cluster you already run. It announces itself, reports what it has, and starts accepting work.

The data stays where you put it

Accounts, sessions and the database live in your cluster. The control plane sends intent and reads status back. It never holds your users.

Regions you name yourself

A data plane belongs to a region you declare, and a deployment is placed where you say it goes.

Shared or reserved

A cluster can take work from anyone on the platform, or be reserved for a single organisation and nothing else.

Nothing here you cannot take with you

You are paying for the operating, not for access to the software.

Ferriskey

The identity provider is open source. You can read the code that handles your users’ sign in.

No lock in by design

The database is ordinary Postgres and archives land in object storage. Leaving means taking a dump and a container image.

Built in the open

Ferriskey is developed publicly. Fixes and ideas you contribute are available to everyone.

See the code on GitHub

Put your first agent under control

Tell us which agents you run. We open your space, and you write your first rule in a few minutes.

We read every request ourselves and open spaces in small groups during the private beta.