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
    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions