# Getting Started with PhoenixGenApiTui
PhoenixGenApiTui is a terminal-based interactive explorer for PhoenixGenApi applications. Navigate your services, function configs, call flows, cluster topology, rate limits, and runtime health โ without leaving the terminal.
## Installation
Add `phoenix_gen_api_tui` to your dependencies:
```elixir
def deps do
[
{:phoenix_gen_api_tui, "~> 0.1.0"}
]
end
```
For development-only exploration, restrict to `:dev`:
```elixir
{:phoenix_gen_api_tui, "~> 0.1.0", only: :dev}
```
## Quick Start
Start your application and open IEx:
```bash
iex -S mix
```
Then launch the TUI:
```elixir
iex> PhoenixGenApiTui.ui()
```
## UI Layout
```
โญโ ๐ฅ PhoenixGenApi TUI Explorer โ UserService โโโโโโโโโโโโโโโโโโโโโโโโฎ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โญโ Search โโโโโโโโโโโโโโฎ โญโ user_service โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ / search... โ โ Functions โ Call Flows โ Cluster โ Health โ.. โ
โฐโโโโโโโโโโโโโโโโโโโโโโโฏ โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โญโ Navigation 2s ยท 3f โโฎ โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ โถ โ user_service (2) โ โ Request Type Version Response Nodes โ
โ โ get_user โ โ get_user 1.0.0 sync [node1] โ
โ โ create_user โ โ create_user 1.0.0 sync [node1] โ
โ โ blog_service (1) โ โ โ
โฐโโโโโโโโโโโโโโโโโโโโโโโฏ โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โ j/k navigate โ select h/l panels Tab tabs / search r refresh q โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
```
## How It Works
PhoenixGenApiTui reads runtime configuration from your running PhoenixGenApi application:
```
iex> PhoenixGenApiTui.ui()
โ PhoenixGenApiTui.Introspection.load()
โ PhoenixGenApi.ConfigDb.get_all_functions()
โ PhoenixGenApi.Diagnostics.list_call_flows()
โ PhoenixGenApi.Diagnostics.cluster_view()
โ PhoenixGenApi.Diagnostics.health_check()
โ PhoenixGenApi.Diagnostics.statistics()
โ PhoenixGenApi.RateLimiter.get_configured_limits()
โ Pre-loaded into navigable state struct
โ ExRatatui.App renders it (local, SSH, or distributed)
```
No database connection is needed. The tool reads the *shape* of your running system, not its data.
## Data Caching
The explorer caches introspection data with a 30-second TTL to avoid excessive RPC calls. Press `r` at any time to force a refresh. The header shows a status indicator:
- `โ` โ All subsystems loaded successfully
- `โ ` โ Some subsystems unavailable (partial data)
- `โ` โ Connection error
## See Also
- [Keyboard Reference](keyboard_reference.md) โ all keybindings
- [Transports](transports.md) โ SSH and distributed mode
- [Tab Reference](tabs.md) โ what each tab shows