§ architecture
The kernel does six things. The extensions do everything else.
Squilla borrows from operating-system design. The kernel manages content nodes, rendering, auth, the CoreAPI, the event bus, and the MCP server. Anything feature-specific is a sovereign gRPC extension.
§ 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