Skip to content

Add local web dashboard (forge ui)#13

Merged
initializ-mk merged 2 commits intomainfrom
ui/local-ui
Mar 1, 2026
Merged

Add local web dashboard (forge ui)#13
initializ-mk merged 2 commits intomainfrom
ui/local-ui

Conversation

@initializ-mk
Copy link
Contributor

Summary

  • Adds forge ui command that launches a local web dashboard at http://localhost:4200 for managing the full agent lifecycle from the browser
  • Introduces the forge-ui Go module — an embedded SPA (Preact + HTM, no build step) served via go:embed
  • Uses dependency injection (StartFunc, CreateFunc, OAuthFunc) so forge-ui has no import dependency on forge-cli

Dashboard & Agent Management

  • Auto-discovers agents by scanning workspace for forge.yaml files
  • Start/stop agents with one click, real-time status updates via SSE
  • Passphrase prompt for agents with encrypted secrets

Interactive Chat

  • Streaming A2A chat proxy with markdown rendering
  • Session history — browse and resume previous conversations
  • Tool call visibility during agent execution

Create Agent Wizard (9 steps, matches CLI forge init)

  • Provider selection with descriptions (OpenAI, Anthropic, Gemini, Ollama, Custom)
  • Per-provider model selection lists (e.g., GPT 5.2, GPT 5 Mini for OpenAI API key; GPT 5.3 Codex for OAuth)
  • OpenAI browser OAuth login support (API key or OAuth choice)
  • Channel selection with inline token collection (Slack app/bot tokens, Telegram bot token)
  • Builtin tools with web search provider choice (Tavily vs Perplexity) and API key input
  • Skills browser with category grouping and inline required/one-of/optional env var collection
  • Fallback provider selection with API keys for automatic failover
  • Passphrase entry for AES-256-GCM secret encryption (eliminates FORGE_PASSPHRASE not set warning)
  • Review step with full summary before creation

Config Editor

  • Monaco-based YAML editor (tree-shaken YAML-only bundle, ~615KB vs 4MB full)
  • Live validation against forge schema, save with Cmd/Ctrl+S
  • Restart agent after config changes

Skills Browser

  • Grid view of registry skills with category filter
  • Detail panel showing full SKILL.md content

Other

  • make fetch-monaco target for rebuilding the Monaco bundle
  • README updated with full forge ui documentation
  • 35 tests across all handlers (dashboard, create, config, skills, chat, sessions)

Test plan

  • cd forge-ui && go test -v ./... — all 35 tests pass
  • cd forge-cli && go build -o /dev/null ./cmd/forge — builds cleanly
  • forge ui --dir /tmp/test-workspace --no-open — server starts on :4200
  • Open dashboard, verify agents discovered and status shown
  • Click "+ New Agent", step through all 9 wizard steps with credential collection
  • Verify created agent appears on dashboard after rescan
  • Click "Config" on agent, edit YAML in Monaco, save with Cmd+S
  • Click "Skills" in sidebar, browse skills, click one for SKILL.md detail
  • Start agent, open chat, send message, verify streaming response

Introduces the forge-ui module — a browser-based dashboard for managing
agents without the CLI. Launched via `forge ui`, it provides:

- Agent discovery, start/stop, and real-time status via SSE
- Interactive A2A streaming chat with session history
- 9-step create wizard matching CLI init (model selection, OAuth,
  web search provider choice, fallback chains, secret encryption)
- Monaco-based YAML config editor with live validation
- Skills browser with category filtering and SKILL.md detail view

Architecture uses dependency injection: forge-cli injects StartFunc,
CreateFunc, and OAuthFunc into forge-ui, avoiding circular imports.
Frontend is Preact + HTM (no build step), embedded via go:embed.
@initializ-mk initializ-mk merged commit 7125854 into main Mar 1, 2026
9 checks passed
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