You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Port the optional Akeru Cloud foundation onto main #426
Akeru cannot offer hosted services such as one-click Slack setup or cloud sandboxes, because Slack and similar platforms need a public HTTPS endpoint and Akeru environments are local. The optional Akeru Cloud foundation that solves this was built on a separate branch and has to be ported onto current main before anything can build on it.
Goal
An optional Akeru Cloud account that an environment links to once with a device code. The environment then keeps one outbound socket the cloud uses to relay requests. Without a linked account, the app works exactly as before. Message content and Slack tokens stay on the environment, and the cloud stores account and environment metadata only.
The port covers:
cloud contracts (packages/contracts/src/cloud.ts: versioned socket protocol, device link, forwarded requests) and the server-only cloud URL setting
the Worker (apps/cloud: Clerk accounts, device link, the EnvironmentHub Durable Object socket, the hosted Slack relay) and its isolated Alchemy infra (apps/cloud/infra, which pins its own Effect version), with workspace, CI, and deploy wiring
the outbound environment link on the server: link, unlink, status, and reconnect. A 401 or 410 handshake marks the link revoked and stops reconnecting
Settings > Akeru Cloud on web, desktop, and mobile, with palette commands and shared status presentation
All cloud tests, focused server, contracts, client-runtime, and web tests, per-package typechecks, and lint for changed files pass
Review fixes: upgrades, hello, unlink, and revoke serialize through the Durable Object gate. A durable revoked marker survives restarts. D1 environment revocation and account-disabled state are checked before welcome. Messages from closed sockets are ignored. Mobile shows an alert for a failed cloud command, and interruptions stay silent
An independent review of the final branch is clean
Integrated browser verification: Settings > Akeru Cloud at desktop and mobile widths, linking against the staging cloud, unlink, and revoke
Native mobile and deployed-service checks are run, or listed as not checked in the PR
How to verify
vp test run apps/cloud
Then the focused server, contracts, client-runtime, and web suites, typechecks for cloud, cloud/web, cloud/infra, server, web, mobile, contracts, and client-runtime, and scoped lint on changed files. On an isolated dev server, Connect in Settings > Akeru Cloud requests a device code from the staging cloud and shows it, and Cancel returns to Not connected.
Out of scope
Slack manifest UI and channel-runtime integration
Hosted sandboxes (AKR-133)
Context
Handoff notes:
2026-10-06 checklist: port contracts and the server-only cloud URL setting. Port the Worker, isolated infra, and deploy wiring with the latest source fixes. Adapt the environment socket and relay seam to the current server modules. Adapt web and desktop Settings, the palette, shared status presentation, and mobile Settings. Port docs and add one minor changeset. One implementation owner edits the checkout. No dev servers, production data access, pushes, or PR creation during implementation.
First handoff, HEAD f2825ed570de7e6baef684b6997d9926f49f5a27, seven local commits. 261 tests across 26 files passed, including 47 cloud tests across 6 files, plus 23 server message-narrowing tests. Eight scoped typechecks passed. Scoped lint and format passed for all 120 changed files. It adapted the current package, module, and navigation structure, kept the isolated infra Effect version, used direct WebSocket upgrade status handling, and fixed existing mobile navigation type inference in a separate commit. No environment migration was needed (main ended at 073).
Review fixes, HEAD 7cf888bc618b67f11d19551c1081d6108e360c17: a876e6226 fix(cloud): reject socket upgrades after environment revocation, and 7cf888bc6 fix(mobile): show cloud connection action failures. Five regression cases fail on the old head f2825ed57 and pass after the fixes. 58 tests across 8 files passed (51 cloud, 3 mobile action, 4 web Settings). Cloud, cloud/infra, and mobile typechecks passed.
Problem
Akeru cannot offer hosted services such as one-click Slack setup or cloud sandboxes, because Slack and similar platforms need a public HTTPS endpoint and Akeru environments are local. The optional Akeru Cloud foundation that solves this was built on a separate branch and has to be ported onto current
mainbefore anything can build on it.Goal
An optional Akeru Cloud account that an environment links to once with a device code. The environment then keeps one outbound socket the cloud uses to relay requests. Without a linked account, the app works exactly as before. Message content and Slack tokens stay on the environment, and the cloud stores account and environment metadata only.
The port covers:
packages/contracts/src/cloud.ts: versioned socket protocol, device link, forwarded requests) and the server-only cloud URL settingapps/cloud: Clerk accounts, device link, theEnvironmentHubDurable Object socket, the hosted Slack relay) and its isolated Alchemy infra (apps/cloud/infra, which pins its own Effect version), with workspace, CI, and deploy wiringAcceptance criteria
mainon branchakeru-cloud/foundation(PR feat(cloud): optional Akeru Cloud account with a linked environment socket #364)How to verify
vp test run apps/cloudThen the focused server, contracts, client-runtime, and web suites, typechecks for cloud, cloud/web, cloud/infra, server, web, mobile, contracts, and client-runtime, and scoped lint on changed files. On an isolated dev server, Connect in Settings > Akeru Cloud requests a device code from the staging cloud and shows it, and Cancel returns to Not connected.
Out of scope
Context
Handoff notes:
f2825ed570de7e6baef684b6997d9926f49f5a27, seven local commits. 261 tests across 26 files passed, including 47 cloud tests across 6 files, plus 23 server message-narrowing tests. Eight scoped typechecks passed. Scoped lint and format passed for all 120 changed files. It adapted the current package, module, and navigation structure, kept the isolated infra Effect version, used direct WebSocket upgrade status handling, and fixed existing mobile navigation type inference in a separate commit. No environment migration was needed (main ended at 073).7cf888bc618b67f11d19551c1081d6108e360c17:a876e6226fix(cloud): reject socket upgrades after environment revocation, and7cf888bc6fix(mobile): show cloud connection action failures. Five regression cases fail on the old headf2825ed57and pass after the fixes. 58 tests across 8 files passed (51 cloud, 3 mobile action, 4 web Settings). Cloud, cloud/infra, and mobile typechecks passed.Created with Claude Opus 5.5 in Claude Code.