Skip to content

update#367

Open
garethpaul wants to merge 10 commits into
cloudflare:mainfrom
garethpaul:main
Open

update#367
garethpaul wants to merge 10 commits into
cloudflare:mainfrom
garethpaul:main

Conversation

@garethpaul
Copy link
Copy Markdown

No description provided.

garethpaul and others added 10 commits February 15, 2026 13:57
Design doc covers architecture, 5 adversarial debate findings, risk matrix.
Implementation plan has 30 bite-sized tasks across 5 phases.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Synthesize a layered defense strategy for quality from a structured
debate between ten philosophical positions (strict TDD, type-system-first,
integration-first, pragmatic minimalist, property-based testing, mutation
testing, contract/API-first, deployment safety, anti-mock realism, and
CI guardrails). Each position attacked the others with codebase-specific
evidence; the consensus is captured in docs/PHILOSOPHY.md.

Adds:
- CLAUDE.md with project instructions and philosophy summary
- docs/PHILOSOPHY.md with the 6-layer defense strategy consensus
- docs/philosophy/positions/*.md with all 10 original position papers

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Transform single-tenant moltbot-sandbox into a multi-tenant platform
where users authenticate with their Poe API key and get their own
sandboxed OpenClaw instance.

- Auth: Poe API key validation, HMAC-SHA256 session tokens, AES-GCM
  key encryption, login/logout/me routes, rate limiting (10/min/IP)
- Multi-tenant: per-user Durable Object sandbox resolution via
  getSandbox(env.Sandbox, userHash), sleepAfter: 1h
- Poe provider: custom provider config in start-openclaw.sh, HTTP
  chat completions enabled, device pairing skipped
- R2 persistence: per-user namespaced paths (users/{hash}/openclaw/)
- Frontend: dark-themed LoginPage, ChatPage with sidebar/model
  selector/SSE streaming, session-based routing
- Security: CSP headers, cookie hardening, timing-safe crypto
- 113 tests passing, typecheck/lint clean

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Rewrites README for multi-tenant Poe API key auth model, adds
step-by-step quickstart guide, fixes hardcoded sleepAfter in auth
route to respect SANDBOX_SLEEP_AFTER env var, and updates
.dev.vars.example for PoeClaw use case.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…SSETS.fetch

DEV_MODE=true caused /api/auth/me to fake authentication, so the SPA
never rendered the login page. ASSETS.fetch('/') could also redirect or
throw silently, falling through to the container proxy.

- Remove DEV_MODE early-return from GET /api/auth/me (always check session)
- Request /index.html explicitly in ASSETS.fetch to avoid auto-trailing-slash redirects
- Add try-catch around ASSETS.fetch in public route and session middleware
- Remove debug console.log statements from session middleware
- Add 8 new tests for auth flow and SPA serving behavior
- Add bug report in docs/bugs/

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Not all Poe API keys start with "pb-". Remove the prefix check and
keep only basic sanity validation (minimum length, no whitespace).
The actual key validation happens via the Poe API call.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Implement asymmetric split login page with floating model tags and
  frosted glass form panel (Instrument Serif + Martian Mono fonts)
- Add design tokens (Midnight Gold palette) in index.css with WCAG AA
  accessibility: focus-visible rings, prefers-reduced-motion, aria-live
- Add Makefile as primary dev interface (make check/dev/build/deploy)
- Move /api/status into session-protected API routes with boot trigger
- Update all docs (README, CLAUDE.md, CONTRIBUTING, GETTING_STARTED)
  to reference make targets instead of raw npm scripts
- Minor formatting cleanups from oxfmt across session/useChat

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Cloudflare Sandbox IDs are limited to 1-63 characters. The SHA-256 hex
digest is 64 chars, causing failures when used as a sandbox identifier.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Three issues prevented the HTTP chat completions endpoint from working:

1. The endpoint was only enabled inside the POE_API_KEY config block in
   start-openclaw.sh — moved it to always-on since PoeClaw is an HTTP API.
2. buildEnvVars never forwarded POE_API_KEY from the worker env to the
   container, so the Poe provider was never configured in dev mode.
3. Gateway token was only injected for WebSocket requests, not HTTP —
   added token injection for HTTP proxy requests too.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The OpenAI-compatible HTTP endpoint expects the gateway token via
Authorization: Bearer header, not query params. Query params only
work for WebSocket connections.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant