The Python foundation under an AI product
Write the product. Not the plumbing under it.
A standalone library for agents — memory, retrieval, chat, tool use — that runs in a script or a notebook with no server at all. Add one extra and it also carries the tenancy, quotas, billing and identity a multi-tenant product would otherwise write for itself.
Apache‑2.0 core · no server required · the paid parts are opt‑in extras
What it is
Every AI product writes the same six things first.
Talking to a model. Remembering what was said. Retrieving from documents. Then, if it is sold to organisations: tenants, quotas, invoices, sign-in.
None of those six is the product. They are what stands between somebody and their product, written again in each one, and they drift apart the first time a defect is fixed in only the copy somebody happened to be looking at.
Lisaba is Lingala for foundation.
The library
It runs in a script before it runs anywhere else.
The core imports no web framework and needs no authentication, no database and no deployment. A notebook is a first-class way to use it, not a demo of it.
Agents and tools
An agent loop, tool definitions and the state around them, with the model provider behind a seam so swapping one is a setting.
Memory
Several backends behind one interface, so a prototype on something small and a product on something large are the same code.
Retrieval
A client for a retrieval engine, and the pipeline around it, kept apart from the agent that consumes it.
Domain models
Typed models for compliance, critical systems and IT — generated into nine other languages from this one source, so a wire contract cannot drift.
The gateway
What a product that sells to organisations no longer has to write.
Four gateways here were built on this, and each thing below was written two or three times before it moved into one place. Four of those copies carried a defect on one side only — which is what a copy costs: the repair lands where somebody looked, and nowhere else.
Tenancy and scope
An organisation, its members, its keys, and the rule that every read is bounded by the caller's token rather than by a parameter.
Plans, quotas, metering
A plan registry, usage counters with a monthly reset, and meter events with a backend a product picks rather than inherits.
Billing, whoever the provider is
The webhook verifier is a seam: a product injects the adapter for its own payment provider, and the route only asks whether the signature holds.
Identity
An account at the shared realm, the membership row, the invitation, the password-setup mail — wired where the billing routes mount, so a sign-up creates an account without anyone remembering to make it.
One refusal shape
Every gateway answers the same envelope, with a stable machine code beside the sentence. A client can branch on the code; the prose stays free to be reworded.
Its command line
Serve, upgrade the database, enrol an operator, find the migration assets — the same six commands, from one builder.
Domains
Seven domain extensions, and the standards behind them.
A regulated domain is not a prompt. It is a vocabulary, a set of obligations and the clauses they come from — and that is what these packages carry.
Fourteen standards packages sit underneath them, one per standard, so a finding can name the clause it came from rather than gesturing at a framework. They are the paid part, and they are extras: nothing in the free core requires one.
Licence
A package that is not paid never requires one that is.
The core is Apache-2.0. The domain extensions are proprietary. The line between them is a rule, not a preference.
An open distribution that declared a proprietary dependency would be uninstallable without buying — which contradicts the licence it ships under. So the paid parts are always an extra: opt into one and it arrives; do not, and everything else still works.
Sales for the extensions have not opened. No figure appears here, and none will: a price lives in the catalogue that charges it, and a page keeping its own copy is a page that disagrees with the invoice the first time one moves.