Files
headquarter/openspec/changes/tool-instances/proposal.md
T
Fusion c795f8f873 feat: implement tool instances backend and session navigation
Backend:
- Create ToolInstance model with status tracking
- Add Alembic migration for tool_instances table
- Create Docker service for compose template rendering and container execution
- Add CRUD API endpoints for tool instances
- Add lifecycle endpoints (start/stop/restart)
- Add user sessions endpoint for navigation
- Register routers in main.py

Frontend:
- Create SessionsProvider with React context
- Create sessions API client
- Update AppShell with sessions section in navigation
- Add session status indicators and polling
- Add CSS for session navigation

Quality gates: typecheck ✓, lint ✓, build ✓
2026-05-19 20:42:59 +02:00

51 lines
1.9 KiB
Markdown

# Tool Instances with Sessions
## Problem
Users currently have no way to launch development tools (code-server, Jupyter, etc.) directly from their repositories. The tool-types system exists but cannot create running container instances. Additionally, there's no concept of a "session" - a running tool linked to a specific repo that appears in navigation for quick access.
## Solution
Implement a complete tool instance management system with sessions:
1. **ToolInstance Model** - Links a ToolType to a GitRepository with status tracking
2. **Session Concept** - A running ToolInstance that gets a top-level navigation entry
3. **Docker Integration** - Render compose templates and execute docker compose commands
4. **Lifecycle Management** - Start, stop, restart, and delete instances
5. **Navigation Integration** - Active sessions appear in the app shell for quick access
## Key Features
### Tool Instance Creation
- Select a tool type and repository
- Generate unique instance name
- Render Docker Compose template with variables
- Execute `docker compose up -d`
- Store container metadata
### Session Management
- Sessions are active/running instances
- Each session gets a top-level nav entry with the tool icon
- Session dropdown in app shell shows active sessions
- Clicking a session opens the tool in a new tab/window
### Lifecycle Operations
- Start: `docker compose start`
- Stop: `docker compose stop`
- Restart: `docker compose restart`
- Delete: `docker compose down -v` + remove DB record
### Status Monitoring
- pending, building, running, stopped, error
- Real-time status via Docker API
- Last accessed timestamp
## Success Criteria
- [ ] Create tool instances from repository page
- [ ] Sessions appear in top-level navigation
- [ ] Start/stop/restart/delete instances
- [ ] Status monitoring works
- [ ] Docker Compose templates render correctly
- [ ] Navigation updates when sessions change