feat: add E2EE transport preflight - #392
Closed
Lokesh7025 wants to merge 8 commits into
Closed
Conversation
Signed-off-by: Lokesh <lokeshselvam7025@gmail.com>
Signed-off-by: Lokesh <lokeshselvam7025@gmail.com>
Signed-off-by: Lokesh <lokeshselvam7025@gmail.com>
Signed-off-by: Lokesh <lokeshselvam7025@gmail.com>
Signed-off-by: Lokesh <lokeshselvam7025@gmail.com>
Signed-off-by: Lokesh <lokeshselvam7025@gmail.com>
Lokesh7025
force-pushed
the
feature/e2ee-transport
branch
from
September 12, 2026 17:07
e665fba to
6ea73a0
Compare
Signed-off-by: Lokesh <lokeshselvam7025@gmail.com>
Signed-off-by: Lokesh <lokeshselvam7025@gmail.com>
Lokesh7025
marked this pull request as ready for review
September 13, 2026 08:24
Contributor
Author
|
Integrated into the shared |
8 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Purpose
Establish the reviewed transport-first boundary for Axl remote control without implementing or enabling production cryptography. This gives the repository a separately deployable TypeScript control plane, an Elixir/OTP opaque WebSocket relay, language-neutral framing fixtures, and an explicit authorization design for future remote permission responses.
Approach
packages/protocol.services/control-plane/with injected authentication, authorization, clock, proof-verification, and persistence boundaries; SHA-256 ticket storage; and atomic one-use ticket consumption.services/relay/with Bandit/WebSock admission, fail-closed control-plane calls, installation-scoped in-memory routing, bounded queued bytes, rate limits, heartbeats, lease expiry, revocation, draining, and compression disabled.forwardedas enqueue into the destination WebSocket process after route and queue checks. It does not imply a network write, endpoint receipt, decryption, or daemon acceptance.docs/architecture/remote-permission-authorization.md. Initial remote decisions are limited toallow_onceanddenyfor already-pending sandboxed tool actions within the current policy ceiling. This draft does not enable remote approval.Security impact:
Architecture review resolutions
device -> daemonanddaemon -> devicetopology. Newer same-identity connections replace older routes.slow_consumereviction.How was this tested?
Passed:
pnpm buildpnpm format:checkpnpm lintpnpm typecheckpnpm check:boundariespnpm check:generatednode --test scripts/check-generated.test.ts scripts/check-boundaries.test.tspnpm --filter @axl/protocol test(44 passed)pnpm --filter @axl/control-plane test(4 passed)mix format --check-formattedmix compile --warnings-as-errorsmix test(12 passed)mix credo --strictmix dialyzermix deps.auditpnpm audit --audit-level highreuse lintnode scripts/check-dco.ts 57bd31b7e718a125fc51a0fcf3a554cb100ea708 HEADmain: TypeScript build/test, relay build/test, workflow lint, CodeQL, REUSE, DCO, dependency review, lockfile audit, and Gitleaks all passedThe full
pnpm testrun completed 835 tests successfully, skipped 8 platform tests, and timed out in the existing unchanged TUI caseediting, /quit, and busy notices behave. A focused rerun of that unchanged TUI test also timed out. This change does not modify TUI code.actionlintcould not run locally because Go is not installed. The pinned workflow-lint CI job passed on this PR.Learning
One binary WebSocket message already provides an authenticated transport message boundary at the relay layer. Removing a duplicate inner payload-length field simplifies both parsers and removes an unnecessary inconsistent-length input. Exact cross-language fixtures remain the compatibility authority.
Cowboy was evaluated first, but its resolved dependency set reported active security advisories. The relay uses the audited Bandit/WebSock path instead.
Checklist
REUSE.toml.Signed-off-bytrailer.Licenses
AI assistance
gpt-5.6-sol.