# toybox: vats whose code is installed at runtime, each a Durable Object facet. # # Sockets have no address here: whoever starts workerd hands them in # (-S name=fd from systemd, or -s name=addr), so holding a socket is the # authority it grants. `state` is likewise overridden with -d state=, # and the switchboard's address with -e switchboard=. using Workerd = import "/workerd/workerd.capnp"; const config :Workerd.Config = ( services = [ (name = "main", worker = .supervisor), (name = "nowhere", network = (allow = [])), # the way out: one switchboard socket, i.e. one handle (see switchboard.capnp) (name = "switchboard", external = (address = "unix:switchboard.sock", http = ())), (name = "state", disk = (path = "state", writable = true)), ], sockets = [ # the ingress: reach the vat mounted at a request's labels (name = "http", http = (), service = (name = "main", entrypoint = "Public")), # create vats, install code, grant egress and ingress (name = "admin", http = (), service = (name = "main", entrypoint = "Admin")), ], ); const supervisor :Workerd.Worker = ( compatibilityDate = "2026-10-01", # bundled by build.js modules = [ (name = "supervisor.js", esModule = embed "dist/supervisor.js"), (name = "vat-runtime.txt", text = embed "dist/vat-runtime.js"), ], durableObjectNamespaces = [ (className = "Vat", uniqueKey = "toybox-vat", enableSql = true), (className = "Directory", uniqueKey = "toybox-directory", enableSql = true), (className = "VatAdmin", uniqueKey = "toybox-vat-admin", enableSql = true), ], durableObjectStorage = (localDisk = "state"), bindings = [ (name = "VATS", durableObjectNamespace = "Vat"), (name = "DIRECTORY", durableObjectNamespace = "Directory"), (name = "VAT_ADMIN", durableObjectNamespace = "VatAdmin"), (name = "LOADER", workerLoader = ()), (name = "SWITCHBOARD", service = "switchboard"), ], globalOutbound = "nowhere", );