MaxQ Engine
Войти

Масштаб без границ.

Быстро масштабируйте приложения в любой среде. Люди и агенты работают вместе в реальном времени с криптографически подтверждёнными правами.

Растите в любой среде.

Облако, собственные серверы или edge. Наращивайте ресурсы и нагрузку, сохраняя одну модель исполнения.

Эластичное исполнение
appreadyMaxQreadycloudidleon-premidleedgeidleappreadyMaxQdeployingcloudstartingon-premstartingedgestartingappreadyMaxQscalingcloudstartingon-premstartingedgestartingappreadyMaxQelasticcloudliveon-premliveedgelive
TypeScript
const app = maxq.app("workspace"); await app.deploy({  environments: ["cloud", "on-prem", "edge"],  scale: "elastic",});

Люди и агенты. Вместе.

Одно рабочее пространство для множества участников. Люди и агенты одновременно работают с общим состоянием и получают изменения в реальном времени.

Общее состояние
peoplejoinedsharedopenagentsjoinedpeopleeditingsharedmergedagentseditingpeoplesyncingsharedsyncingagentssyncingpeoplesyncedsharedliveagentssynced
TypeScript
const room = await maxq.room("workspace");await room.join([person, ...agents]); room.sync.onChange(render);await room.sync.apply(signedChange);

Права с подписью.

Криптографически подписанные разрешения определяют, кому доступны данные и действия. Перед выполнением запроса проверяются подпись, ресурс, действие, срок и отзыв разрешения.

Подписанные права
signatureidentityhuman + AIcapabilitysignedworkspaceblockedidentityhuman + AIcapabilitycheckingworkspaceblockedidentityhuman + AIcapabilityverifiedworkspaceallowedidentityhuman + AIcapabilityverifiedworkspaceapplied
TypeScript
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

Только то, что изменилось.

Sync engine передаёт изменения выбранных объектов и полей. Подписчик получает точечные обновления своей выборки вместо повторной загрузки всех данных.

Точечная синхронизация
sourcechangeddeltawatchingviewwaitingsourcechangeddelta1 patchviewwaitingsourcechangeddeltasendingviewwaitingsourcechangeddeltaappliedviewcurrent
TypeScript
const tasks = room.sync.watch({  collection: "tasks",  where: { projectId },  fields: ["id", "status"],  capability: taskRead,}); tasks.onPatch((patch) => view.apply(patch));

Продолжайте после разрыва.

Локальные изменения остаются в очереди. После подключения синхронизация продолжается с сохранённого курсора и догружает пропущенные операции.

Повторное подключение
localqueuedcursorsavedreplicawaitinglocalconnectingcursorresumereplicawaitinglocalsendingcursorreplayreplicawaitinglocalsyncedcursorcurrentreplicacurrent
TypeScript
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,});

Разные правки. Один результат.

Человек меняет название, агент назначает исполнителя. Независимые изменения полей объединяются в одно состояние, которое получают все участники.

Параллельные изменения
personReadyagentassignedmergeeditingtaskwaitingpersonReadyagentassignedmergemergingtaskwaitingpersonReadyagentassignedmergemergedtaskwaitingpersonReadyagentassignedmergesyncedtaskcombined
TypeScript
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,});

Криптографические права

Доступ к конкретному объекту.

Разрешение связывает ключ участника, ресурс и допустимые действия. Право чтения не даёт права записи, а знание адреса объекта само по себе не открывает доступ.

Объект и действие
capabilityreadrightsreadcheckingwritecheckingcapabilityreadrightsreadcheckingwritecheckingcapabilityreadrightsreadcheckingwritedeniedcapabilityreadrightsreadallowedwritedenied
TypeScript
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);

Передавайте меньше прав.

Делегируйте агенту доступ к задаче, а инструменту — только нужное действие. Каждый следующий участник получает подмножество прав и срок действия в пределах исходного разрешения.

Сужение прав
ownerread/writeagentwaitingtoolwaitingownerread/writeagentreadtoolwaitingownerread/writeagentreadtoolwaitingownerread/writeagentreadtoolread
TypeScript
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);

Доступ можно отозвать.

Отзыв или истечение срока прекращают действие разрешения. Новые запросы блокируются, а связанная подписка закрывается без удаления ранее полученных данных.

Отзыв разрешения
revokeclientactiveaccessvalidstreamliveclientactiveaccessvalidstreamliveclientblockedaccessrevokedstreamclosedclientblockedaccessrevokedstreamclosed
TypeScript
const feed = room.sync.watch({  collection: "tasks",  capability: agentAccess,}); await agentAccess.revoke({ signedBy: ownerKey });await feed.closed;

Начните. И масштабируйте.

Обсудим среду, совместную работу и права доступа для вашего продукта.

Купить