Skip to content

feat: self-sufficient deploy — embedded SPA + voice UI (no Stackbilt org dependency) #40

@stackbilt-admin

Description

@stackbilt-admin

Goal

Make aegis-oss a fully self-contained deployment unit. Any developer should be able to wrangler deploy this repo and get a working AEGIS — chat UI, voice, memory, health dashboard — with nothing beyond their own Cloudflare account and Workers AI.

Currently the repo is a library + API. The UI layer lives in stackbilt-web (a private Stackbilt org consumer). That's the only hard dependency preventing aegis-oss from being genuinely self-sufficient.

What "self-sufficient" means

  • wrangler deploy → working agent at https://your-worker.workers.dev
  • Chat UI served from GET / (SPA bundled as Worker static assets)
  • Voice call flow via @cloudflare/voice/react useVoiceAgent hook
  • All inference via env.AI (Workers AI) — no external API keys required for base operation
  • operator/ config + .dev.vars is the only customization surface

Architecture

web/
  src/
    ui/               ← new: Vite-built SPA
      index.html
      chat.tsx        ← text + voice chat, useVoiceAgent hook
    adapters/
      voice/          ← already shipped (commit 5931b49, issue #39)
        cloudflare-agent.ts
    kernel/           ← untouched

Vite builds web/src/ui/web/public/. Wrangler serves public/ as static assets. The existing index.ts Worker entry already handles routing; GET / gets a new static-asset passthrough.

Why this is the right shape

  • AegisExecutorPort + AegisVoiceAdapter (issue Research: Cloudflare Agents voice API as native voice layer for aegis-oss agents #39) already prove the pattern: CF-native bindings, no external keys
  • operatorConfig drives the system prompt — a standalone deployer just edits their config and gets a personalized agent
  • The exports.ts library surface and the deployment entry point (index.ts) coexist — nothing breaks for downstream consumers

Phases

  • Phase 1: Vite build pipeline for web/src/ui/web/public/; wrangler static asset config
  • Phase 2: Minimal chat UI (text only) — useVoiceAgent-ready but not wired yet
  • Phase 3: Wire AegisVoiceAdapter DO route; add voice call UI (useVoiceAgent)
  • Phase 4: Embed health dashboard (port server-rendered /health page to SPA component)

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions