SAMOURAÏ COOP
Start a project

Case study · Engineering

Greffon

Self-host your sovereign apps in one click.

The greffon.io landing page — "Self-host any app."
greffon.io, as it ships.

Client

Samouraï Coop — our own product

Crew

Engineering

Scope

Control plane · Worker agent · Open-source catalogue

Stack

Django · FastAPI · Docker · Nginx

01

The ask

Deploying an application means choosing between two poles, and most teams live between them.

Managed platforms democratised deployment at the price of metered bills, imposed terms and no say over where data lives. Kubernetes is the industry standard for good reasons, and a multi-year operational commitment for teams that should be shipping features. The gap between them is where organisations with data-residency, compliance or budget constraints actually sit.

02

The why

Self-hosting is not nostalgia. It is a position on who owns the pipeline.

Samouraï Coop builds and promotes open-source culture, and the engineering studio treats “who controls the infrastructure” as a design constraint rather than an afterthought. An organisation should own its deployment pipeline the way it owns its code. Greffon is that conviction made operable — the same position the coop takes on its own tools, offered to everyone else.

03

The constraint

It had to be operable by teams with no platform group to staff.

No Helm charts, no admission controllers, no ingress DSL — Docker Compose and a declarative configuration schema. Any Linux box qualifies as a node: bare metal, VM or cloud instance. The constraint was not “make it powerful”, it was “make it something a small team can run on the hardware it already has”.

04

How we built it

One control plane, any number of worker nodes, no vendor in the loop.

The manager backend is a Django control plane: it holds the catalogue of deployable applications, authenticates users, orchestrates instance lifecycle, and issues certificates through a built-in certificate authority — no external secrets manager to bootstrap first. Each greffer is a lightweight FastAPI agent on one of your nodes. It registers over a secure handshake, installs mTLS certificates for every exchange that follows, renders the Docker Compose template with Jinja2, creates volumes and networks, fronts the stack with a per-instance Nginx TLS proxy, and reports health back asynchronously. Greffers are cattle, not pets: the manager holds the configuration, so a dead node means the instance restarts elsewhere.

Greffon architecture — a browser reaches the Django manager, which talks to FastAPI greffer nodes over mTLS; each node drives a Docker Engine fronted by per-instance Nginx TLS and runs your Docker Compose applications.
The shipped architecture — one control plane, any number of workers, no vendor in the loop.

05

What we shipped

Beta, live, and open exactly where openness counts.

Greffon runs in beta at greffon.io. Two components are public: greffer, the worker agent, in Python and FastAPI under AGPL-3.0 — network copyleft, so hosted derivatives stay open while self-hosted use is unrestricted; and greffon-catalog, the example application templates, in TypeScript under Apache-2.0 so templates can be reused anywhere without friction. The licensing split is intentional: strong copyleft where the platform’s value lives, permissive where adoption should be effortless.

The Greffon catalogue — 31 self-hostable applications, each on a card with a one-line description and a “Graft” button.
The catalogue. Every entry is an open-source application template, deployable to a node you own.
The “My greffons” screen — four deployed applications, each showing its host node, its URL and its run state.
Four applications on one node, each with its own address and lifecycle controls.
One application’s detail screen — hot and cold backups, an automatic backup schedule, a move-to-another-worker control, and live per-container CPU and memory.
One application: backups, a move to another worker, and live per-container usage.

06

What happened

The core is stable. The platform hardens in the open.

The first milestone closed the reliability of the core — Django control plane, built-in CA, a stable orchestration API — and that is where the beta stands. The greffer’s migration to FastAPI unlocked async operation and WebSocket support; next come step-ca and Let’s Encrypt integration, reverse tunnelling for greffers behind NAT, and structured observability. Each milestone closes real operational gaps before the next one opens.

  • Adoption figures and a named user quote — awaiting

Project team

  • Omar SyCTO & Founder
  • zôÖmaCEO
  • Louis BiancherinEngineer
  • Miguel VictoriaEngineer
  • David GozlanEngineer
Next case studyHyper Hacktive Festival

A project that needs both crews?