Current section
Files
Jump to
Current section
Files
guides/getting_started.md
# Getting Started with PhoenixGenApiTuiPhoenixGenApiTui 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.## InstallationAdd `phoenix_gen_api_tui` to your dependencies:```elixirdef 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 StartStart your application and open IEx:```bashiex -S mix```Then launch the TUI:```elixiriex> 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 WorksPhoenixGenApiTui 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 CachingThe 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