One specification per app. The platform compiles the rest.

Every Nibor app is a NAS document: models, access rules, screens, server functions and jobs. The compiler turns it into Postgres tables, row-level security, a REST and MCP API and the interface, on our cloud or on your servers. This page is the technical overview for IT, security and developers.

Read the docs Run the AI-readiness audit

Describe it. Ship it. Let your AI run it.

Every app is a single document in NAS, the Nibor App Spec. The AI writes NAS; our compiler turns it into a real Postgres schema, row-level security policies, a REST API, running server logic and a rendered interface. Nothing is a mock. Every app is a typed application graph, models, views, functions and roles with explicit, validated references.

STEP 1

Describe

"A booking system for our storage facilities, with BankID and credit checks."

STEP 2

Generate NAS

AI writes the app spec (models, permissions, pages, automations), validated against our schema.

STEP 3

Compile

Tables, RLS policies, tenant isolation, API and UI are generated. Security is compiled, not configured.

STEP 4

Live

Published at its own subdomain, TLS included. Edit by chatting; it redeploys in seconds.

// NAS, the Nibor App Spec (excerpt) { "app": { "name": "Storage Bookings" }, "models": [ { "name": "Booking", "fields": [ { "name": "unitId", "type": "ref" }, ... ], "access": { "read": "authenticated", "write": "staff" } } ], "views": [ { "route": "/book", "layout": "wizard", ... } ], "appAuth": { "enabled": true, "roles": ["admin", "customer"] } }

ONAS: the organisation, written down.

NAS describes one app. ONAS describes the organisation: which systems hold what, how work moves between people, who may do what. Apps and agents read the same graph.

Connect reads and writes across the systems you already run, through governed MCP tools.

Every tool call carries the caller's role; an agent gets exactly the access a person with that role has.

The graph is the source for the notifications and the company map your teams see in Nibor OS.

We don’t hand you an agent. We hand your agents the right tools.

Every app exposes a governed MCP endpoint, your data, your access rules, your AI key. Agents work through your tools, in a place they cannot break. Claude, OpenAI or Cursor.

  • Model Context Protocol (MCP) endpoint for every app
  • 12 platform tools: list apps, query data, create & deploy
  • Per-app tools auto-generated from your data models
  • Works with Claude, Cursor, OpenCode, and any MCP client
mcp-config.json
{
  "mcpServers": {
    "nibor": {
      "url": "https://nibor.io/_mcp",
      "headers": {
        "X-API-Key": "plat_your_key_here"
      }
    }
  }
}

The spec is the app, not a description of it

Most business software gets harder to change every year. Each new requirement is layered onto code nobody fully understands, so the safe move is always to add rather than alter, and the system accumulates. Nibor works the other way round: the app is regenerated from its NAS document, so there is no accreted layer to build on top of.

One source of truth

Models, permissions, pages and automations live in a single document. The schema, the security policies, the API and the interface are all derived from it, they cannot drift from the spec, because they are produced by it.

Security is compiled, not configured

Row-level security, tenant isolation and PII handling are emitted for every model from the access rules in the spec. Nothing depends on remembering to tick the right box on the right table.

No dependency chain

Our own language, our own compiler, our own infrastructure. There is no third-party app-builder underneath that can deprecate an API, change its pricing, or break your software on its own schedule.

The usual way

Five years of changes, each one made by someone who has left. Changing the old parts is risky, so nobody does. The cost of every new feature rises with the age of the system.

With NAS

You change the spec and the app is rebuilt from it. A five-year-old app compiles the same way a new one does, because the compiler (not the accumulated code) decides what gets built.

Our language. Our compiler. Our infrastructure.

No third-party app-builder underneath, no per-seat SaaS dependencies. The whole platform runs on a single Kubernetes node, which is exactly what makes it deployable inside a customer's own walls.

Security compiled in

Row-level security and tenant isolation are generated from the spec for every model: per-app membership floors, per-operation policies, PII guards.

Full stack, one node

Kubernetes, Postgres, auth, data API, object storage, ingress with automatic TLS. Self-contained and reproducible.

On-prem ready

The same containers deploy in a customer's cloud or data centre. Regulated organisations keep their data, with licensing control.

AI-agnostic

Claude today; the NAS layer isolates the model. Bring your own AI key, including EU-hosted providers.

The economics

A full application for about $2 of AI.

Nibor's AI writes one compact spec (the NAS document), not thousands of lines of app code. Generating (and re-generating) an app costs a fraction of the API spend that code-writing tools burn. Bring your own key; you see every cent.

AI spend per app →
Nibor: one spec
~$2
Code-generating tools
far more
Illustrative: the AI API cost to compile a complete app on your own key. Code-generating tools re-emit the whole application on every change; Nibor emits one compact spec, so the token cost stays low.

Four ways to get an internal tool. One of them survives the security review.

ApproachLive inSecurity reviewYear three
AI code buildersDaysFails on data residencyCode nobody wrote
Generic no-codeWeeksVendor-hosted onlyLocked to their roadmap
Consultant buildSix to twelve monthsPasses, at six figuresChange requests at day rate
Off-the-shelf SaaSInstantPassesStill does not fit
NiborMinutes to daysPasses: compiled row-level security, your cloud or oursRegenerated from the spec, no legacy

What runs underneath.

Postgres

One schema per app, generated from the spec. Your data, in a database you can export tonight.

Row-level security

Access rules in the spec become policies in the database. The API cannot bypass them.

REST and MCP

PostgREST for screens and integrations, an MCP endpoint for agents, both under the same policies.

Sandboxed runtime

Server functions and scheduled jobs run sandboxed per app, with brokered access to vendors and keys that never reach the sandbox.

Our cloud or your servers

The same manifests run our cloud and your data centre. Nothing in an app depends on where it runs.