feat: landing page redesign - #3
Closed
YairEtzion wants to merge 9 commits into
Closed
Conversation
Replace static API keys with P-256 ECDSA device identities stored in Secure Enclave, TPM 2.0, or encrypted files. Zero static secrets. Packages: @amesh/core — crypto primitives (81 tests) @amesh/keystore — hardware key storage (32 tests) @amesh/sdk — signing client + verification middleware (25 tests) @amesh/cli — device management CLI @amesh/relay — WebSocket pairing relay (5 tests) 143 tests. Full protocol spec v2.0.0. MIT licensed.
…file permissions * fix: critical security hardening — HMAC key material, file permissions, input validation - AllowList HMAC seal now uses private key material (encrypted-file) or a stored random secret (hardware keystores) instead of the public key, which was publicly known from identity.json - All sensitive files (keys, identity, allow list) written with 0o600/0o700 - deviceId validated against path traversal (/^[a-zA-Z0-9_-]+$/) - Bootstrap token jti entropy increased from 32 to 128 bits - authMeshVerify middleware accepts custom NonceStore for multi-instance replay protection - 500 error responses no longer leak allow_list_integrity_failure to clients - TPM temp files use crypto.randomUUID() instead of Math.random() * fix: second wave security hardening — ECDH, bootstrap, relay, nonce store Core crypto: - ECDH shared secret now returns raw 32-byte x-coordinate per NIST SP 800-56A (was including the compressed point prefix byte) - Canonical string rejects newlines in fields to prevent injection Bootstrap: - Controller public key now embedded in token payload (pub field) — token signature verified against trusted embedded key, not untrusted relay message - Hardware keystore bootstrap no longer re-generates keypair (was creating a mismatched key); uses keyAlias mapping instead Relay hardening: - Per-OTC attempt tracker (max 10 failed connects per OTC) blocks distributed brute-force regardless of source IP count - WebSocket maxPayload set to 64KB (was 100MB default) - Connection limit of 10,000 concurrent WebSocket connections - Bootstrap watcher TTL + cleanup on socket disconnect - Message field whitelisting on bootstrap_init forwarding - Rate limiter periodic cleanup prevents unbounded Map growth SDK: - Base64URL decoding for public key id field (was plain base64, mismatching spec) Nonce store: - Max size cap (1M entries) prevents memory exhaustion under flooding - Expired nonces detected on individual lookup, not just periodic sweep * docs: update spec, ADRs, and roadmap for security hardening - protocol-spec.md: ECDH shared secret is raw x-coordinate (32 bytes), AllowList HMAC derivation documents hardware keystore fallback, KeyStore interface includes getHmacKeyMaterial - architecture-decisions.md: ADR-009 covers all security hardening decisions - roadmap.md: Security Hardening section, remaining items in Future
Add standalone binary packaging using Node.js Single Executable Application. The CLI is bundled with esbuild into a single CJS file, then embedded into the Node.js binary via SEA — no Node.js required on the user's machine. - Custom SEA entry point bypassing oclif filesystem discovery - esbuild build script (3.9MB minified bundle) - GitHub Actions workflow: matrix build for darwin-arm64/x64 + linux-x64 - Homebrew formula (platform-specific binary tarballs) - nfpm config for .deb packages - Upgrade Node.js to 24 LTS across CI, Docker, and docs
feat: Homebrew + APT distribution via Node.js SEA
Add Homebrew + APT distribution section to roadmap, remove legacy docs/index.html (replaced by landpage), update gitignore.
…son table Inspired by bun.sh, the landing page now uses the full viewport width with alternating section backgrounds instead of being constrained to max-w-2xl. Adds tabbed install CTA (Homebrew/npm/Binary), comparison table vs alternatives, 3-column feature grid, two-column how-it-works, CLI demo with terminal chrome, bottom CTA, 4-column footer, GitHub Invertocat logo, and responsive mobile nav.
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.
Summary
max-w-2xl/ 672px)Test plan
pnpm buildpasses (static adapter)/docs,/use-cases/*,/docs/integration,/docs/self-hosting🤖 Generated with Claude Code