# purehate/da_vinci_console architecture

> Architecture diagram of the GitHub repository purehate/da_vinci_console, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/purehate/da_vinci_console
- Repository: https://github.com/purehate/da_vinci_console

## Overview

Da Vinci Console is a tmux session and window picker with agent awareness, pane-level command broadcasting, and an optional tmux status-line dashboard. The documented main workflow opens the picker, browses sessions and windows with a live preview, then switches context or performs management actions; users can also drill down to panes. Agent detection is shared between the picker and status-line integration. Source excerpts were unavailable, so links reflect README-documented relationships rather than unverified implementation details.

Main entry points: [`da-vinci-console.sh`](https://github.com/purehate/da_vinci_console/blob/main/da-vinci-console.sh) (Session picker), [`extras/tmux.conf`](https://github.com/purehate/da_vinci_console/blob/main/extras/tmux.conf) (Shareable tmux config), [`agents/jump.sh`](https://github.com/purehate/da_vinci_console/blob/main/agents/jump.sh) (Agent jump picker), [`broadcast_popup.sh`](https://github.com/purehate/da_vinci_console/blob/main/broadcast_popup.sh) (Broadcast popup)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_picker["Session picker"]
  node_picker_popup["Picker popup<br/>[picker_popup.sh]"]
  node_picker["Session picker"]
  node_session_views["Sessions and windows"]
  node_preview["Live preview"]
  node_pane_drilldown["Pane drill-down"]
  node_picker_actions["Picker actions"]
end

subgraph group_agents["Agent awareness"]
  node_agent_lib["Agent detection<br/>[lib.sh]"]
  node_agent_state["Agent status list<br/>[agents_state.sh]"]
  node_window_agent["Window agent status<br/>[window_agent.sh]"]
  node_agent_jump["Agent jump picker<br/>[jump.sh]"]
end

subgraph group_broadcast["Pane broadcast"]
  node_broadcast_popup["Broadcast popup<br/>[broadcast_popup.sh]"]
  node_pane_commands["Selected pane commands<br/>[broadcast_popup.sh]"]
end

subgraph group_status["Tmux presentation"]
  node_tmux_config["Shareable tmux config<br/>[tmux.conf]"]
  node_status_line["Agent status line<br/>[window_agent.sh]"]
  node_pane_border["Live pane border<br/>[tmux.conf]"]
end

node_user(("Tmux user"))
node_tmux["Tmux"]
node_fzf["fzf"]
node_process_tree["Pane process trees"]

node_user -->|"opens"| node_picker_popup
node_picker_popup -->|"launches"| node_picker
node_picker -->|"browses"| node_tmux
node_picker -->|"presents choices"| node_fzf
node_picker -->|"shows"| node_session_views
node_picker -->|"previews"| node_preview
node_picker -->|"drills down"| node_pane_drilldown
node_picker -->|"handles actions"| node_picker_actions
node_picker_actions -->|"manages sessions"| node_tmux
node_agent_lib -->|"detects agents"| node_process_tree
node_agent_state -->|"uses detection"| node_agent_lib
node_agent_state -->|"feeds statuses"| node_picker
node_window_agent -->|"uses detection"| node_agent_lib
node_window_agent -->|"feeds status line"| node_tmux_config
node_user -->|"opens"| node_agent_jump
node_agent_jump -->|"presents agents"| node_fzf
node_agent_jump -->|"jumps to window"| node_tmux
node_user -->|"opens"| node_broadcast_popup
node_broadcast_popup -->|"selects panes"| node_fzf
node_broadcast_popup -->|"collects command"| node_pane_commands
node_pane_commands -->|"sends to panes"| node_tmux
node_user -.->|"loads config"| node_tmux_config
node_tmux_config -->|"displays agents"| node_status_line
node_tmux_config -->|"configures"| node_pane_border
node_pane_border -->|"shows agent status"| node_window_agent

click node_picker_popup "https://github.com/purehate/da_vinci_console/blob/main/picker_popup.sh"
click node_picker "https://github.com/purehate/da_vinci_console/blob/main/da-vinci-console.sh"
click node_session_views "https://github.com/purehate/da_vinci_console/blob/main/da-vinci-console.sh"
click node_preview "https://github.com/purehate/da_vinci_console/blob/main/da-vinci-console.sh"
click node_pane_drilldown "https://github.com/purehate/da_vinci_console/blob/main/da-vinci-console.sh"
click node_picker_actions "https://github.com/purehate/da_vinci_console/blob/main/da-vinci-console.sh"
click node_agent_lib "https://github.com/purehate/da_vinci_console/blob/main/agents/lib.sh"
click node_agent_state "https://github.com/purehate/da_vinci_console/blob/main/agents/agents_state.sh"
click node_window_agent "https://github.com/purehate/da_vinci_console/blob/main/agents/window_agent.sh"
click node_agent_jump "https://github.com/purehate/da_vinci_console/blob/main/agents/jump.sh"
click node_broadcast_popup "https://github.com/purehate/da_vinci_console/blob/main/broadcast_popup.sh"
click node_pane_commands "https://github.com/purehate/da_vinci_console/blob/main/broadcast_popup.sh"
click node_tmux_config "https://github.com/purehate/da_vinci_console/blob/main/extras/tmux.conf"
click node_status_line "https://github.com/purehate/da_vinci_console/blob/main/agents/window_agent.sh"
click node_pane_border "https://github.com/purehate/da_vinci_console/blob/main/extras/tmux.conf"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_picker_popup,node_picker,node_session_views,node_preview,node_pane_drilldown,node_picker_actions,node_user toneBlue
class node_agent_lib,node_agent_state,node_window_agent,node_agent_jump toneAmber
class node_broadcast_popup,node_pane_commands toneMint
class node_tmux_config,node_status_line,node_pane_border toneRose
class node_tmux,node_fzf,node_process_tree toneIndigo
```

## Components

### Session picker

- [Picker popup](https://github.com/purehate/da_vinci_console/blob/main/picker_popup.sh): `picker_popup.sh`
- [Session picker](https://github.com/purehate/da_vinci_console/blob/main/da-vinci-console.sh): `da-vinci-console.sh`
- [Sessions and windows](https://github.com/purehate/da_vinci_console/blob/main/da-vinci-console.sh): `da-vinci-console.sh`
- [Live preview](https://github.com/purehate/da_vinci_console/blob/main/da-vinci-console.sh): `da-vinci-console.sh`
- [Pane drill-down](https://github.com/purehate/da_vinci_console/blob/main/da-vinci-console.sh): `da-vinci-console.sh`
- [Picker actions](https://github.com/purehate/da_vinci_console/blob/main/da-vinci-console.sh): `da-vinci-console.sh`

### Agent awareness

- [Agent detection](https://github.com/purehate/da_vinci_console/blob/main/agents/lib.sh): `agents/lib.sh`
- [Agent status list](https://github.com/purehate/da_vinci_console/blob/main/agents/agents_state.sh): `agents/agents_state.sh`
- [Window agent status](https://github.com/purehate/da_vinci_console/blob/main/agents/window_agent.sh): `agents/window_agent.sh`
- [Agent jump picker](https://github.com/purehate/da_vinci_console/blob/main/agents/jump.sh): `agents/jump.sh`

### Pane broadcast

- [Broadcast popup](https://github.com/purehate/da_vinci_console/blob/main/broadcast_popup.sh): `broadcast_popup.sh`
- [Selected pane commands](https://github.com/purehate/da_vinci_console/blob/main/broadcast_popup.sh): `broadcast_popup.sh`

### Tmux presentation

- [Shareable tmux config](https://github.com/purehate/da_vinci_console/blob/main/extras/tmux.conf): `extras/tmux.conf`
- [Agent status line](https://github.com/purehate/da_vinci_console/blob/main/agents/window_agent.sh): `agents/window_agent.sh`
- [Live pane border](https://github.com/purehate/da_vinci_console/blob/main/extras/tmux.conf): `extras/tmux.conf`

### Other components

- **Tmux user**
- **Tmux**
- **fzf**
- **Pane process trees**

## Connections

- Tmux user → Picker popup: opens
- Picker popup → Session picker: launches
- Session picker → Tmux: browses
- Session picker → fzf: presents choices
- Session picker → Sessions and windows: shows
- Session picker → Live preview: previews
- Session picker → Pane drill-down: drills down
- Session picker → Picker actions: handles actions
- Picker actions → Tmux: manages sessions
- Agent detection → Pane process trees: detects agents
- Agent status list → Agent detection: uses detection
- Agent status list → Session picker: feeds statuses
- Window agent status → Agent detection: uses detection
- Window agent status → Shareable tmux config: feeds status line
- Tmux user → Agent jump picker: opens
- Agent jump picker → fzf: presents agents
- Agent jump picker → Tmux: jumps to window
- Tmux user → Broadcast popup: opens
- Broadcast popup → fzf: selects panes
- Broadcast popup → Selected pane commands: collects command
- Selected pane commands → Tmux: sends to panes
- Tmux user → Shareable tmux config: loads config
- Shareable tmux config → Agent status line: displays agents
- Shareable tmux config → Live pane border: configures
- Live pane border → Window agent status: shows agent status
