poe

The 0NF CLI. One install line, two commands to your first running model.

Beta — invite only. Already have credentials? Jump to Install. No credentials yet? Request access →

Install poe

Paste this into a terminal:

/bin/bash -c "$(curl -fsSL https://poe.dev.ironapi.com/install)"

The installer walks you through a one-time GitLab login (for image pulls), drops the poe binary on your PATH, and verifies a pull works. Takes about 30 seconds.

Requires Docker Desktop or Colima running on macOS or Linux.

Don't have a GitLab account for git.srv.ironapi.com yet? See Request access below — the installer will fail at the image-pull step without it.


Your first model — 60 seconds

poe init fleet
cd fleet
poe up

You now have:

Check the row is there:

poe gml 'execute read'

Shape it into your own

Open config/schema.xml. It's a tutorial module with one entity, three states, three transitions. Change the names, add attributes, add entities. Your schema IS your API — <transition> elements become GML verbs and REST endpoints, <attribute> elements become columns and JSON fields.

Then:

poe deploy

No restart. No migration files. Your model is live.


What poe gives you

CommandWhat it does
poe upBring the stack up, load your schema, run seeds
poe deployApply schema + seed changes to a running stack
poe gml '<stmt>'Run any GML statement (create, edit, query)
poe psqlOpen a psql shell on the database
poe logs apiTail a service's logs
poe downStop the stack (data persists)
poe reset -yStop the stack and wipe data
poe env hostedSwitch to the hosted-deployment profile
poe hosted-setup <host>One-shot Traefik/DNS/cert wiring for a server

Deploy to a server

poe env hosted
poe hosted-setup your-project.example.com
poe deploy

Your model is reachable at https://your-project.example.com with a real TLS cert, Traefik routing, and the same commands you use locally.


Troubleshooting

poe up fails silently. Your working directory is probably outside $HOME. Colima can't bind-mount paths like /tmp/…. Move the project under $HOME and retry.

Bootstrap container exits non-zero. poe logs bootstrap. The last line names the file and line that failed.

Port already in use. Another poe up is running. poe down in that project, or change API_PORT= in .env.

Image pull denied. Your GitLab token expired. Re-run the installer — it'll refresh.


Under the hood

poe is the CLI for 0NF — a language for defining typed, ACL-aware, state-machine-driven domain models as declarative XML. The substrate gives you a metamodel, an RLS-scoped data layer, agenda-based authorization, and a GML + REST + GraphQL + WebSocket surface out of the box.

No schema migrations. No hand-written CRUD. No access-control bolted on afterwards. Your schema.xml is the contract; everything downstream is generated.


Request access

0NF is in closed beta. Access is granted individually — we're watching early usage carefully and giving each user a hand on their first model.

Request access →

Drop us a line at hello@ironapi.com with a sketch of what you'd like to build. We reply with a personal invite that creates your git.srv.ironapi.com account and an image-pull token the installer picks up.

No waitlist, no drip campaign, no vendor-procurement flow. One email, one real reply, one working setup.


Next