zaghaghi/openapi-tui

Terminal UI to list, browse and run APIs defined with openapi spec.

Rust

1,342

214 commits

updated May 14, 2026

See the code

README

logo

openapi-tui

CI

Terminal UI to list, browse and run APIs defined with OpenAPI v3.0 and v3.1 spec.

Usage

❯ openapi-tui --help
This TUI allows you to list and browse APIs described by the openapi specification.

Usage: openapi-tui [OPTIONS] --input <PATH>

Options:
  -i, --input <PATH>          Input file or url, in json or yaml format with openapi specification
  -H, --header <NAME: VALUE>  Global header to attach to every request, in `Name: Value` form. May be repeated.
  -h, --help                  Print help
  -V, --version               Print version

Examples

# open local yaml file
❯ openapi-tui -i examples/stripe/spec.yml

# open local json file
❯ openapi-tui -i examples/petstore.json

# open remote file
❯ openapi-tui -i https://raw.githubusercontent.com/github/rest-api-description/main/descriptions-next/api.github.com/api.github.com.yaml

# attach default headers to every request
❯ openapi-tui -i examples/petstore.json -H 'Authorization: Bearer xyz' -H 'X-Env: dev'

Demo

demo

Other Feature Animations

Show more

Nested Components

nested-refrences

Fullscreen

fullscreen

Webhooks

webhooks

Filter

filter

Call Endpoints

call

Multiple Server Support

call


Installation

Install from source:

❯ cargo install openapi-tui

Or download pre-built artifact from release page.

Docker

Just run the application with docker.

# open local file
❯ docker run --rm -ti -v$(pwd)/examples:/opt zaghaghi/openapi-tui -i /opt/petstore.json

# open remote file
❯ docker run --rm -it zaghaghi/openapi-tui -i https://raw.githubusercontent.com/github/rest-api-description/main/descriptions-next/api.github.com/api.github.com.yaml

Distro Packages

Packaging status

Packaging status

Arch Linux

You can install using pacman as follows:

❯ pacman -S openapi-tui

NixOS

You can install the openapi-tui package directly with the following command:

nix profile install github:zaghaghi/openapi-tui

You can also install openapi-tui by adding it to your configuration.nix file.

# flake.nix

{
  inputs.openapi-tui.url = "github:zaghaghi/openapi-tui";
  # ...

  outputs = {nixpkgs, ...} @ inputs: {
    nixosConfigurations.<your-hostname> = nixpkgs.lib.nixosSystem {
      specialArgs = { inherit inputs; }; # this is the important part
      modules = [
        ./configuration.nix
      ];
    };
  }
}

Then, add openapi-tui to your configuration.nix

# configuration.nix

{inputs, pkgs, ...}: {
  environment.systemPackages = with pkgs; [
    inputs.openapi-tui.packages.${pkgs.system}.openapi-tui
  ];
}

Keybindings

KeyAction
→, lMove to next pane
←, hMove to previous pane
↓, jMove down in lists
↑, kMove up in lists
1...9Move between tabs
]Move to next tab
[Move to previous tab
fToggle fullscreen pane
gGo in nested items in lists
qQuit
/Filter apis
:Run commands
?Show help popup with keys and commands
Backspace, bGet out of nested items in lists

Commands Main Page

CommandDescription
qQuit
request, rGo to request page
historyRequest history
authOpen authentication popup to set credentials for components.securitySchemes
helpShow help popup with keys and commands

Commands Request Page

CommandDescription
qQuit
send, sSend request
authOpen authentication popup to set credentials for components.securitySchemes
copy [curl|httpie]Copy the current request to the clipboard. Defaults to curl. e.g. copy curl
helpShow help popup with keys and commands
query, qAdd or remove query strings. sub-commands are add or rm. e.g. query add page
header, hAdd or remove headers. sub-commands are add or rm. e.g. header add x-api-key
request, rLoad request payload. e.g. request open /home/hamed/payload.json
response, sSave response payload e.g. response save /home/hamed/result.json
jq <expr>Filter JSON response with a jq expression. e.g. jq .items[0]
jqClear jq filter and return to normal response view
search <term>Search for a term in the response body (case-insensitive). e.g. search error
searchClear search and return to normal response view

Environment Variables

VariableDescription
OPENAPI_TUI_DEFAULT_SERVERAdd a custom server url to the list of servers

Implemented Features

  • Viewer
  • OpenAPI v3.1
  • Display Webhooks
  • Display Info and Version
  • Filter APIs
  • Remote API specification
  • Merge Parameters Based on in
  • Pane Fullscreen Mode
  • Nested Components
  • Status Line
  • Phone Page
  • Call History
  • Request Plain Editor
  • Header Input (No Validation)
  • Path Input (No Validation)
  • Calling
  • Plain Response Viewer (Status + Headers + Body)
  • History viewer
  • Refactor footer, add flash footer messages
  • Import request body file
  • Save response body and header
  • Command history with ↑/↓
  • Support array query strings
  • Suppert extra headers
  • Support multiple servers
  • Format response body by content-type (JSON pretty-print)
  • Syntax highlighting in response viewer
  • Line numbers in response viewer
  • Scroll response body with j/k
  • JQ filter for JSON responses
  • Text search in response body
  • Request progress bar
  • Display Key Mappings in Popup

Backlog

  • Schema Types (openapi-31)
  • Read Spec from STDIN
openapi3
openapi31
ratatui-rs
rust-lang
tui

zaghaghi/openapi-tui

Terminal UI to list, browse and run APIs defined with openapi spec.

Rust

1,342

214 commits

updated May 14, 2026

See the code

README

logo

openapi-tui

CI

Terminal UI to list, browse and run APIs defined with OpenAPI v3.0 and v3.1 spec.

Usage

❯ openapi-tui --help
This TUI allows you to list and browse APIs described by the openapi specification.

Usage: openapi-tui [OPTIONS] --input <PATH>

Options:
  -i, --input <PATH>          Input file or url, in json or yaml format with openapi specification
  -H, --header <NAME: VALUE>  Global header to attach to every request, in `Name: Value` form. May be repeated.
  -h, --help                  Print help
  -V, --version               Print version

Examples

# open local yaml file
❯ openapi-tui -i examples/stripe/spec.yml

# open local json file
❯ openapi-tui -i examples/petstore.json

# open remote file
❯ openapi-tui -i https://raw.githubusercontent.com/github/rest-api-description/main/descriptions-next/api.github.com/api.github.com.yaml

# attach default headers to every request
❯ openapi-tui -i examples/petstore.json -H 'Authorization: Bearer xyz' -H 'X-Env: dev'

Demo

demo

Other Feature Animations

Show more

Nested Components

nested-refrences

Fullscreen

fullscreen

Webhooks

webhooks

Filter

filter

Call Endpoints

call

Multiple Server Support

call


Installation

Install from source:

❯ cargo install openapi-tui

Or download pre-built artifact from release page.

Docker

Just run the application with docker.

# open local file
❯ docker run --rm -ti -v$(pwd)/examples:/opt zaghaghi/openapi-tui -i /opt/petstore.json

# open remote file
❯ docker run --rm -it zaghaghi/openapi-tui -i https://raw.githubusercontent.com/github/rest-api-description/main/descriptions-next/api.github.com/api.github.com.yaml

Distro Packages

Packaging status

Packaging status

Arch Linux

You can install using pacman as follows:

❯ pacman -S openapi-tui

NixOS

You can install the openapi-tui package directly with the following command:

nix profile install github:zaghaghi/openapi-tui

You can also install openapi-tui by adding it to your configuration.nix file.

# flake.nix

{
  inputs.openapi-tui.url = "github:zaghaghi/openapi-tui";
  # ...

  outputs = {nixpkgs, ...} @ inputs: {
    nixosConfigurations.<your-hostname> = nixpkgs.lib.nixosSystem {
      specialArgs = { inherit inputs; }; # this is the important part
      modules = [
        ./configuration.nix
      ];
    };
  }
}

Then, add openapi-tui to your configuration.nix

# configuration.nix

{inputs, pkgs, ...}: {
  environment.systemPackages = with pkgs; [
    inputs.openapi-tui.packages.${pkgs.system}.openapi-tui
  ];
}

Keybindings

KeyAction
→, lMove to next pane
←, hMove to previous pane
↓, jMove down in lists
↑, kMove up in lists
1...9Move between tabs
]Move to next tab
[Move to previous tab
fToggle fullscreen pane
gGo in nested items in lists
qQuit
/Filter apis
:Run commands
?Show help popup with keys and commands
Backspace, bGet out of nested items in lists

Commands Main Page

CommandDescription
qQuit
request, rGo to request page
historyRequest history
authOpen authentication popup to set credentials for components.securitySchemes
helpShow help popup with keys and commands

Commands Request Page

CommandDescription
qQuit
send, sSend request
authOpen authentication popup to set credentials for components.securitySchemes
copy [curl|httpie]Copy the current request to the clipboard. Defaults to curl. e.g. copy curl
helpShow help popup with keys and commands
query, qAdd or remove query strings. sub-commands are add or rm. e.g. query add page
header, hAdd or remove headers. sub-commands are add or rm. e.g. header add x-api-key
request, rLoad request payload. e.g. request open /home/hamed/payload.json
response, sSave response payload e.g. response save /home/hamed/result.json
jq <expr>Filter JSON response with a jq expression. e.g. jq .items[0]
jqClear jq filter and return to normal response view
search <term>Search for a term in the response body (case-insensitive). e.g. search error
searchClear search and return to normal response view

Environment Variables

VariableDescription
OPENAPI_TUI_DEFAULT_SERVERAdd a custom server url to the list of servers

Implemented Features

  • Viewer
  • OpenAPI v3.1
  • Display Webhooks
  • Display Info and Version
  • Filter APIs
  • Remote API specification
  • Merge Parameters Based on in
  • Pane Fullscreen Mode
  • Nested Components
  • Status Line
  • Phone Page
  • Call History
  • Request Plain Editor
  • Header Input (No Validation)
  • Path Input (No Validation)
  • Calling
  • Plain Response Viewer (Status + Headers + Body)
  • History viewer
  • Refactor footer, add flash footer messages
  • Import request body file
  • Save response body and header
  • Command history with ↑/↓
  • Support array query strings
  • Suppert extra headers
  • Support multiple servers
  • Format response body by content-type (JSON pretty-print)
  • Syntax highlighting in response viewer
  • Line numbers in response viewer
  • Scroll response body with j/k
  • JQ filter for JSON responses
  • Text search in response body
  • Request progress bar
  • Display Key Mappings in Popup

Backlog

  • Schema Types (openapi-31)
  • Read Spec from STDIN
openapi3
openapi31
ratatui-rs
rust-lang
tui

Project health

crates.io

Latest release

0.10.2 · Mar 7, 2025

Releases this year

0

Significant stargazers

(top 24 of 38)

Ulices

24 followers · starred Jan 2025

Colin Dean

261 followers · starred Mar 2024

Jacob Adam

36 followers · starred Feb 2026

Harsh Shandilya

739 followers · starred Mar 2024