§ architecture

A kernel
for kernels.

Squilla's architecture is borrowed from operating systems: the kernel does the minimum required to be a CMS, and everything else is a sovereign extension. Disable an extension and there is no dead code in core. Add a new extension and it brings its own database tables, HTTP routes, admin UI pages, scripts, and migrations.

HARD RULE

If disabling an extension would leave dead code in core, that code belongs in the extension, not the kernel.

PUBLIC WEB
Fiber HTTP · pre-resolved layouts · cached
L0
MCP SERVER
Model Context Protocol · ~50 tools · stdio + http
L1
KERNEL (CoreAPI)
nodes · rendering · auth · event bus · capability gates
L2
gRPC PLUGIN BUS
HashiCorp go-plugin · bidirectional · GRPCBroker
L3
EXTENSIONS
media · forms · email · sitemap · blocks · providers
L4
POSTGRESQL 16
JSONB · GIN indexes · per-extension migrations · pooling
L5
kernel
internal/cms · internal/coreapi
extensions
extensions/*/cmd/plugin
themes
themes/*/scripts/theme.tengo
§ request lifecycle

From URL to bytes, in seven steps.

01 Fiber receives request router resolves to node handler
02 Layout tree lookup pre-resolved at activation; no DB query
03 Node fetch JSONB query · GIN index hit · single round-trip
04 Filter chain extensions hook into filter.apply
05 Template render html/template with custom funcs
06 Response flush compressed at the response writer (gzip / brotli)
07 Done event.emit("page.served") · async