Skip to content
R-GldPublic

About

A secure C++20 terminal client for RDAP

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

rdap-tui

rdap-tui is an open-source terminal client for the Registration Data Access Protocol (RDAP). The Network Resources MVP supports interactive domain, IPv4, IPv6, CIDR, and ASN lookups with structured registration, contact, resource, notice, and JSON views. Discovery uses the IANA bootstrap registries and requests use verified HTTPS.

rdap-tui domain lookup

Requirements

  • C++20 compiler: GCC 13+, Clang 18+, or AppleClang 16+
  • CMake 3.25+
  • Conan 2.26+

Build

# One-time setup only, if no Conan default profile exists:
# conan profile detect
conan lock create . --lockfile-out=conan.lock -s compiler.cppstd=20
conan install . --build=missing -s build_type=Release -s compiler.cppstd=20
cmake --preset conan-release
cmake --build --preset conan-release
ctest --preset conan-release

Run the executable generated under build/Release/:

./build/Release/rdap-tui

Conan also generates a conan-debug preset when installed with -s build_type=Debug.

Downloads

Tagged releases provide directly downloadable executables for Linux and macOS, plus a SHA256SUMS file. Users may need to restore the executable bit after downloading:

chmod +x rdap-tui-v*-linux-* # or rdap-tui-v*-macos-*

Usage

Enter an ASCII domain, Punycode A-label, IPv4 or IPv6 address, CIDR prefix, or ASN and press Enter. ASN input accepts both AS13335 and 13335; numeric-only input is therefore treated as an ASN. CIDR input is normalized to its network prefix before lookup.

The result is split into six views: Overview, Contacts, a resource-specific DNS/Network/Autnum view, Notices, Saved, and JSON. Press 1–6 to switch views while the query field is not focused. The JSON view retains both a pretty-printed document and the byte-preserving response.

Use Tab to move between controls, arrow keys or Page Up/Page Down to scroll, and Ctrl+C or Escape to quit. When the query field is focused, Up/Down navigates the query history. Press f outside the query field to toggle a favorite for the latest successful lookup or the current valid input. The Saved view lists favorites and recent history; pressing Enter on an entry re-runs it.

rdap-tui [--help] [--version]

Malformed optional fields do not hide valid registration data: the structured projection reports warnings in the Notices view, while the complete response remains available under JSON.

The country shown for IP and ASN results is the registration country reported by the registry; it is not IP geolocation.

Unicode-to-IDNA conversion, BGP/RPKI data, geolocation, and binary packages remain outside this milestone.

Bootstrap cache

The IANA bootstrap registries (used to find the authoritative RDAP service for a query) are cached to disk, honoring the Cache-Control/ETag headers IANA returns, so repeated runs avoid re-fetching them. The cache lives at:

  • Linux: $XDG_CACHE_HOME/rdap-tui/bootstrap when XDG_CACHE_HOME is an absolute path (or ~/.cache/rdap-tui/bootstrap)
  • macOS: ~/Library/Caches/rdap-tui/bootstrap

Deleting this directory clears the cache; a fresh copy is fetched on the next lookup.

Local state and config

Successful queries are saved locally as history, and favorites are stored in the same state file. Linux follows the XDG base directory specification and ignores relative XDG paths:

  • Config: $XDG_CONFIG_HOME/rdap-tui/config.json (or ~/.config/rdap-tui/config.json)
  • State: $XDG_STATE_HOME/rdap-tui/state.json (or ~/.local/state/rdap-tui/state.json)

macOS stores both files in ~/Library/Application Support/rdap-tui/.

The optional config file currently supports:

{
  "schema_version": 1,
  "history_limit": 200
}

Invalid or missing config/state files fall back to defaults and never prevent lookups.

Optional network smoke test

Normal tests never access the Internet. To build the explicit smoke test:

conan install . --build=missing -s build_type=Debug -s compiler.cppstd=20 \
  -o '&:network_tests=True'
cmake --preset conan-debug -DRDAP_ENABLE_NETWORK_TESTS=ON
cmake --build --preset conan-debug
ctest --preset conan-debug -L network --output-on-failure

The smoke test contacts IANA and authoritative services for example.com, 1.1.1.1, and AS13335; external outages or rate limiting can therefore make it fail.

Standards and security

Discovery follows RFC 9224, query URLs follow RFC 9082, and responses follow RFC 9083. TLS verification is mandatory and redirects are restricted to HTTPS.

See CONTRIBUTING.md for development checks and SECURITY.md for reporting vulnerabilities.

License

Copyright © 2026 rdap-tui contributors.

Licensed under GPL-3.0-or-later. See LICENSE.

About

A secure C++20 terminal client for RDAP

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages