Files
vmux/.planning/research/FEATURES.md
2026-03-23 11:25:05 +01:00

172 lines
13 KiB
Markdown

# Feature Research
**Domain:** AI session management / desktop workspace orchestration
**Researched:** 2026-03-23
**Confidence:** HIGH
## Feature Landscape
### Table Stakes (Users Expect These)
Features users assume exist. Missing these = product feels incomplete.
| Feature | Why Expected | Complexity | Notes |
|---------|--------------|------------|-------|
| Session discovery | Sans detection automatique des sessions Claude Code, l'outil n'a aucun sens. Tous les concurrents (agent-deck, dmux, amux, agentdock) font ca. | MEDIUM | Poll des process `claude` via `/proc` + lecture des fichiers JSONL dans `~/.claude/projects/`. Refresh toutes les 2-3s. |
| State detection (working / waiting / idle) | Le coeur de la valeur. agent-deck utilise un modele 3 etats (running/waiting/idle), amux ajoute "needs input" et "stuck". C'est le minimum pour savoir ou porter son attention. | MEDIUM | Parsing du dernier entry JSONL de la session + detection de process activity. Les hooks Claude Code (`notification` event avec `idle_prompt`, `permission_prompt`) sont la source la plus fiable. |
| Session list with status | Tous les outils du domaine affichent une liste de sessions avec indicateur visuel de statut. Sans ca, on revient au scan manuel des workspaces. | LOW | Liste filtrable avec couleurs : vert (travaille), jaune (attend), gris (idle). |
| Workspace association | vmux cible specifiquement i3. Chaque session doit etre associee a son workspace i3 et worktree git. C'est le lien entre "cette session" et "ou elle vit sur mon ecran". | MEDIUM | Correlation via PID du process claude -> window -> workspace i3 (via i3 IPC). Le worktree git se deduit du cwd du process. |
| Switch to workspace | Pouvoir naviguer vers la session qui a besoin d'attention. agent-deck fait ca avec tmux (`Ctrl+b` puis numero), vmux le fait avec i3-msg. | LOW | `i3-msg workspace [name]` via IPC. Trivial une fois l'association etablie. |
| Desktop notifications | Quand une session passe de "travaille" a "attend input", le dev doit etre prevenu. Tous les outils serieux le font : amux, agent-deck, et meme les hooks Claude Code natifs. dunst est le standard sur i3. | LOW | Notification via `notify-send` / D-Bus vers dunst. Se declenche sur transition d'etat. |
### Differentiators (Competitive Advantage)
Features that set the product apart. Not required, but valuable.
| Feature | Value Proposition | Complexity | Notes |
|---------|-------------------|------------|-------|
| i3-native integration | Aucun concurrent ne cible i3 specifiquement. dmux/agent-deck/agentdock sont tous tmux-centric. vmux est le seul a mapper sessions Claude -> workspaces i3, ce qui correspond exactement au workflow de Pierre (1 workspace = 1 sujet = 1 worktree). | MEDIUM | i3 IPC (socket Unix) pour lister workspaces, detecter les fenetres, switcher. Pas de dependance tmux. |
| Session preview (last output lines) | Voir ce que Claude fait/demande sans switcher de workspace. amux appelle ca "peek mode", agentdock a un "live terminal". vmux peut faire plus leger : juste les dernieres lignes pertinentes. | MEDIUM | Lecture du JSONL de session pour extraire le dernier message assistant. Pas besoin de terminal complet, juste un apercu texte. |
| Attention priority ordering | Au lieu d'une simple liste, trier les sessions par urgence : "attend input" en haut, "permission needed" en second, "working" en bas. Aucun concurrent ne fait ca explicitement. | LOW | Tri de la liste par etat. Trivial en logique, fort en UX. |
| Multi-screen awareness | Pierre utilise 2 ecrans. vmux peut savoir sur quel ecran/output se trouve chaque workspace i3, et optimiser le placement (ex: sessions actives sur ecran 1, sessions en attente sur ecran 2). | LOW | i3 IPC expose les outputs (ecrans) et leurs workspaces. Lecture seule suffit pour l'affichage. |
| Integration piaire | piaire gere deja le workflow (timetracking, features, MRs). vmux pourrait exposer l'etat des sessions a piaire ou consommer les infos de piaire (quel ticket = quelle session). Synergie unique a cet ecosysteme. | HIGH | Necessite une API/IPC entre les deux outils. A evaluer apres v1. |
| Statusline i3bar widget | Au lieu d'une TUI separee, afficher le resume dans la barre i3 elle-meme : "3 sessions: 1 attend, 2 travaillent". Information passive, zero friction. | LOW | Script i3status/i3blocks qui lit l'etat des sessions. Format texte simple. |
### Anti-Features (Commonly Requested, Often Problematic)
Features that seem good but create problems.
| Feature | Why Requested | Why Problematic | Alternative |
|---------|---------------|-----------------|-------------|
| Terminal integre / repondre depuis vmux | Eviter de switcher de workspace pour repondre a Claude. Agentdock et amux le font. | Complexite enorme (terminal emulation, xterm.js, gestion input). 80% de la valeur vient de savoir *ou* aller, pas de repondre sur place. Pierre l'a deja identifie comme out of scope. | Switch rapide vers le workspace i3 en 1 touche. Le terminal natif est deja la-bas. |
| Lancement de sessions | dmux et amux permettent de creer des sessions. Ca semble pratique. | vmux observe, ne cree pas. Lancer des sessions implique gerer worktrees, branches, contexte initial. C'est le role des skills piaire/Claude Code. Ajouter ca cree un second "lanceur" concurrent. | Rester observateur. Les sessions sont lancees par les skills existants. |
| Auto-reponse / watchdog | amux auto-repond aux prompts de permission, auto-compacte le contexte. Semble utile pour le mode "unattended". | Dangereux. Approuver automatiquement des actions Claude Code sans review humaine. Le watchdog d'amux est pour des workloads batch, pas pour du dev interactif ou la review compte. | Notifier rapidement pour que le dev reponde lui-meme. |
| Dashboard web | agentdock et amux proposent un dashboard web avec WebSocket. Plus joli, accessible depuis le telephone. | Over-engineering pour un outil local single-user. Ajoute Node.js/serveur web/WebSocket a la stack. vmux est un outil desktop i3, pas un SaaS. | TUI ou widget i3bar. Leger, natif, zero overhead. |
| Support multi-agent (Cursor, Codex, Gemini...) | agent-deck et dmux supportent N agents differents. | vmux est specifiquement pour Claude Code. Supporter d'autres agents dilue le focus et complexifie la detection d'etat (chaque agent a son propre format). | Cibler Claude Code uniquement. Si le besoin emerge, generaliser plus tard. |
| Token/cost tracking | Plusieurs outils (amux, Claude Code Usage Monitor) trackent les tokens et couts. | Deja disponible via `claude usage` et le dashboard Anthropic. Dupliquer cette feature n'apporte rien. La statusline Claude Code expose deja ces metriques. | Laisser Claude Code gerer ses propres metriques. vmux se concentre sur l'etat et la navigation. |
## Feature Dependencies
```
[Session Discovery]
|
+--requires--> [State Detection]
| |
| +--enables--> [Desktop Notifications]
| |
| +--enables--> [Attention Priority Ordering]
|
+--requires--> [Workspace Association]
| |
| +--enables--> [Switch to Workspace]
| |
| +--enables--> [Multi-screen Awareness]
|
+--enables--> [Session Preview]
[Session List with Status]
+--requires--> [Session Discovery]
+--requires--> [State Detection]
[Statusline i3bar Widget]
+--requires--> [Session Discovery]
+--requires--> [State Detection]
+--independent-of--> [Session List TUI]
[Integration piaire]
+--requires--> [Session Discovery]
+--requires--> [Workspace Association]
+--deferred--> after v1 validation
```
### Dependency Notes
- **Session Discovery is the foundation:** Tout depend de la capacite a trouver et monitorer les process Claude Code actifs. Sans ca, rien ne fonctionne.
- **State Detection depends on Discovery:** On ne peut determiner l'etat d'une session qu'apres l'avoir trouvee.
- **Workspace Association is parallel to State Detection:** Les deux enrichissent la session decouverte, mais sont independants l'un de l'autre.
- **Notifications require State Detection:** On notifie sur les transitions d'etat, donc il faut d'abord detecter l'etat.
- **i3bar Widget et TUI sont independants:** On peut avoir l'un sans l'autre. Le widget i3bar est plus leger et potentiellement suffisant en v1.
## MVP Definition
### Launch With (v1)
Minimum viable product pour valider le concept : "savoir instantanement quelle session a besoin de moi".
- [ ] Session discovery (detect Claude Code processes + read JSONL state files)
- [ ] State detection (working / waiting for input / idle)
- [ ] Workspace i3 association (PID -> window -> workspace)
- [ ] Session list with status (TUI ou i3bar widget, au choix)
- [ ] Switch to workspace (navigation en 1 action)
- [ ] Desktop notifications on state transition (via dunst/notify-send)
### Add After Validation (v1.x)
Features to add once core is working.
- [ ] Session preview (dernieres lignes de sortie) si le simple switch ne suffit pas
- [ ] Attention priority ordering si le nombre de sessions depasse 5+
- [ ] Multi-screen awareness si la repartition ecran 1/ecran 2 reste un pain point
- [ ] Statusline i3bar widget (si v1 est TUI) ou TUI (si v1 est widget)
### Future Consideration (v2+)
Features to defer until product-market fit is established.
- [ ] Integration piaire pour lier session <-> ticket/feature
- [ ] Keyboard shortcuts globaux (i3 bindings) pour naviguer sans ouvrir vmux
- [ ] Historique des sessions (quand elles ont commence, duree, etc.)
## Feature Prioritization Matrix
| Feature | User Value | Implementation Cost | Priority |
|---------|------------|---------------------|----------|
| Session discovery | HIGH | MEDIUM | P1 |
| State detection | HIGH | MEDIUM | P1 |
| Workspace i3 association | HIGH | MEDIUM | P1 |
| Session list with status | HIGH | LOW | P1 |
| Switch to workspace | HIGH | LOW | P1 |
| Desktop notifications | HIGH | LOW | P1 |
| Session preview | MEDIUM | MEDIUM | P2 |
| Attention priority ordering | MEDIUM | LOW | P2 |
| Statusline i3bar widget | MEDIUM | LOW | P2 |
| Multi-screen awareness | LOW | LOW | P2 |
| Integration piaire | MEDIUM | HIGH | P3 |
**Priority key:**
- P1: Must have for launch
- P2: Should have, add when possible
- P3: Nice to have, future consideration
## Competitor Feature Analysis
| Feature | agent-deck | dmux | amux | agentdock | vmux (our approach) |
|---------|-----------|------|------|-----------|---------------------|
| Session detection | tmux-based | tmux-based | tmux-based | tmux-based | Process/JSONL + i3 IPC |
| State detection | 3 states (run/wait/idle) | Basic | 4 states + stuck | Live terminal | 3 states via hooks + JSONL |
| WM integration | None (tmux only) | None (tmux only) | None (web) | None (web) | Native i3 workspace mapping |
| Notifications | tmux statusbar | None | Web + mobile push | Web | dunst/D-Bus (native desktop) |
| Terminal embed | Yes (tmux pane) | Yes (tmux pane) | Yes (web xterm.js) | Yes (web xterm.js) | No (switch to workspace) |
| Session creation | Yes | Yes | Yes | Yes | No (observe only) |
| Multi-agent | Yes (10+ agents) | Yes (11 agents) | Claude Code only | Claude + Cursor | Claude Code only |
| Git worktrees | Optional | Core feature | Optional | Core feature | Detected, not managed |
| Overhead | Go binary | Node.js | Python + web server | Node.js + React | Go binary (lightweight) |
**Key differentiator:** vmux is the only tool that integrates with a tiling WM instead of wrapping everything in tmux. For a dev who already organizes work in i3 workspaces, this is more natural than a tmux-within-i3 approach.
## Sources
- [agent-deck](https://github.com/asheshgoplani/agent-deck) - Go + Bubble Tea TUI, tmux-based session manager
- [dmux](https://github.com/formkit/dmux) - Node.js agent multiplexer with git worktrees
- [amux](https://github.com/mixpeek/amux) - Python multiplexer with web dashboard and watchdog
- [agentdock](https://github.com/vishalnarkhede/agentdock) - Web dashboard for parallel agents
- [Claude Code Hooks Reference](https://code.claude.com/docs/en/hooks) - Official hook events including notification types
- [Claude Code Notification Hooks](https://alexop.dev/posts/claude-code-notification-hooks/) - Practical guide to notification setup
- [tmuxwatch](https://github.com/steipete/tmuxwatch) - Charmbracelet-powered tmux session dashboard
- [Claude Code session monitoring via JSONL](https://www.ksred.com/managing-multiple-claude-code-sessions-building-a-real-time-dashboard/) - Real-time dashboard implementation details
- [i3 IPC documentation](https://i3wm.org/docs/userguide.html) - i3 workspace and window management
---
*Feature research for: AI session management / desktop workspace orchestration*
*Researched: 2026-03-23*