Permission is
cryptographic proof.
Signed capability permits say who may access, write, synchronize, or delegate each part of a workspace. They can be verified offline—without asking an authentication server.
XNET / PRIVATE · SOVEREIGN · PROGRAMMABLE
Chat, threads, documents, and tools that belong to the people using them.
↓INTRODUCING XNET
Xnet is the private, sovereign network where Osvauld workspaces live. It is not a website and does not belong to a domain.
A workspace is addressed by cryptographic identity and served by its own node. Software works directly with synchronized shared state, while signed permits replace the traditional authentication server.
Signed capability permits say who may access, write, synchronize, or delegate each part of a workspace. They can be verified offline—without asking an authentication server.
Local state remains useful offline. Changes synchronize through the workspace’s sovereign node and merge safely when participants reconnect.
AI can write a small Lua app on demand directly over the group’s shared data. With identity, permissions, storage, synchronization, and UI already provided, it only needs to create the behavior you asked for.
Agents can work with shared structures, call Lua functions, and change application logic directly instead of pretending to be a person clicking pixels.
Each workspace has a sovereign node that serves its data and enforces its signed permits. It can be a Raspberry Pi, phone, laptop, or server—with no static IP, domain, or cloud platform required.
The group owns and evolves its Lua source instead of renting a fixed application. Changes synchronize to participants and hot reload without a traditional server release pipeline.
THE SHIFT
No domain to buy.
No cloud stack to deploy.
Write the behavior.
Sync the software.
ONE SHARED SUBSTRATE
If you can write JavaScript, the model is familiar. Open a shared document and read it as ordinary nested tables. Explicit writes synchronize; identity and signed permissions are already part of the environment.
Read the architecture ↗local chat = doc:open("chat")
local function send(text)
chat:insert({ "messages" }, doc.map({
id = uuid(), text = text
})) -- synchronized
end
return function()
local rows = {}
for i = 1, #chat.messages do
rows[#rows + 1] = message_view(chat.messages[i])
end
return ui.col({ rows, composer(send) })
end THE SYSTEM
Lua logic that travels with the workspace
Runs sandboxed Lua apps and turns their UI descriptions into interactive software
Local-first documents served by a sovereign node and merged between participants
Your keys, encrypted storage, and offline-verifiable access under your control
SUPPORTED BY
Osvauld has received grant support from