Scale without limits.
Scale applications fast, in any environment. People and agents work together in real time with cryptographically verified permissions.
Grow in any environment.
Cloud, your own servers, or edge. Add resources and handle growing workloads with one execution model.
const app = maxq.app("workspace"); await app.deploy({ environments: ["cloud", "on-prem", "edge"], scale: "elastic",});People and agents. Together.
One workspace for many participants. People and agents work on shared state simultaneously and receive changes in real time.
const room = await maxq.room("workspace");await room.join([person, ...agents]); room.sync.onChange(render);await room.sync.apply(signedChange);Permissions, signed.
Cryptographically signed capabilities define who can access data and perform actions. Before execution, each request is checked against the signature, resource, action, expiry, and revocation status.
const access = await maxq.capability.issue({ subject: actor.publicKey, resource: room.ref, rights: ["read", "write"],}, ownerKey); await room.sync.apply(change, { capability: access,});Sync engine
Only what changed.
The sync engine sends changes to selected objects and fields. Each subscriber receives patches for its query instead of downloading the entire dataset again.
const tasks = room.sync.watch({ collection: "tasks", where: { projectId }, fields: ["id", "status"], capability: taskRead,}); tasks.onPatch((patch) => view.apply(patch));Continue after disconnect.
Local changes remain queued. On reconnect, sync resumes from a saved cursor and receives the operations missed while the connection was unavailable.
const cursor = await room.sync.checkpoint();room.sync.disconnect(); await room.sync.commit(change, { offline: "queue", capability: sessionAccess,}); await room.sync.connect({ after: cursor, capability: sessionAccess,});Different edits. One result.
A person changes the title while an agent assigns the task. Independent field edits combine into one shared state, delivered to every participant.
await Promise.all([ room.sync.patch(taskId, { title: "Ready" }, { capability: personAccess, }), room.sync.patch(taskId, { assignee: "agent" }, { capability: agentAccess, }),]); const task = await room.sync.read(taskId, { capability: personAccess,});Cryptographic permissions
Access to a specific object.
A capability binds a participant’s key to a resource and allowed actions. Read permission does not grant write access, and knowing an object’s address grants no authority.
const readOnly = await maxq.capability.issue({ subject: analyst.publicKey, resource: task.ref, rights: ["read"],}, ownerKey); await task.read({ capability: readOnly });const canWrite = await task.permits("write", readOnly);Delegate less authority.
Give an agent access to a task and a tool only the action it needs. Each further delegation narrows rights and stays within the original capability’s expiry.
const reader = await access.delegate({ subject: agent.publicKey, resource: task.ref, rights: ["read"], expiresAt: deadline,}, personKey); const toolAccess = await reader.delegate({ subject: tool.publicKey, rights: ["read"],}, agentKey);Access can be revoked.
Revocation or expiry invalidates the capability. New requests are blocked and its subscription closes, while previously received data remains intact.
const feed = room.sync.watch({ collection: "tasks", capability: agentAccess,}); await agentAccess.revoke({ signedBy: ownerKey });await feed.closed;