🌐 Web UI¶
SpecMem includes an interactive web interface for exploring and managing specifications.
Quick Start¶
Open http://localhost:8765 in your browser.
Demo Mode¶
For a quick demo with SpecMem's own specs (dogfooding):
This will: 1. Copy SpecMem's own specs as sample data 2. Build the Agent Experience Pack 3. Launch the Web UI 4. Open your browser automatically
Features¶
📊 Dashboard¶
The dashboard provides an overview of your specification health:
- Total specs by type and lifecycle
- Recent changes
- Validation issues
- Impact graph summary
🔍 Search¶
Semantic search across all specifications:
- Natural language queries
- Filter by type, lifecycle, priority
- Sort by relevance, date, or priority
- Preview results inline
📈 Impact Graph¶
Interactive visualization of spec relationships:
- Zoom and pan
- Click nodes for details
- Filter by relationship type
- Export as image
⏱️ Timeline¶
Visual history of specification changes:
- Chronological view
- Filter by spec or date range
- Compare versions
- Identify drift
✅ Validator¶
Run and view validation results:
- Real-time validation
- Filter by severity
- Quick fixes
- Export reports
Configuration¶
The Web UI uses the default port 8765. You can customize this:
CLI Options¶
API Endpoints¶
The web UI exposes a REST API at /api:
Blocks (Specs)¶
# List all blocks
GET /api/blocks
# Get specific block
GET /api/blocks/{id}
# Search blocks
GET /api/search?q=authentication&limit=10
# Get pinned blocks
GET /api/pinned
# Get statistics
GET /api/stats
Coverage¶
Health Score¶
Impact Graph¶
Quick Actions¶
# Scan workspace
POST /api/actions/scan
# Build Agent Pack
POST /api/actions/build
# Validate specs
POST /api/actions/validate
# Run coverage analysis
POST /api/actions/coverage
# Query specs
POST /api/actions/query?q=authentication
Sessions (Kiro)¶
# List sessions
GET /api/sessions
# Search sessions
GET /api/sessions/search?q=query
# Get session details
GET /api/sessions/{session_id}
Powers (Kiro)¶
WebSocket¶
Real-time updates via WebSocket at /api/ws:
const ws = new WebSocket('ws://localhost:8765/api/ws');
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
if (data.type === 'spec_update') {
console.log('Specs updated:', data.files);
// Refresh your data
}
};
// Keepalive
ws.send('ping');
The server automatically watches for spec file changes and broadcasts updates to all connected clients.
Embedding¶
Embed the UI in your own application:
from specmem.ui import create_app
app = create_app()
# Mount at a subpath
from fastapi import FastAPI
main_app = FastAPI()
main_app.mount("/specmem", app)
Docker¶
Run the UI in Docker:
Screenshots¶
Screenshots Coming Soon
Visual screenshots of the Web UI will be added in a future update.
Keyboard Shortcuts¶
| Shortcut | Action |
|---|---|
/ |
Focus search |
g d |
Go to dashboard |
g s |
Go to search |
g g |
Go to graph |
g t |
Go to timeline |
g v |
Go to validator |
? |
Show shortcuts |