Beautiful amateur radio callsign lookup for the terminal
Look up any US amateur radio callsign from the FCC Universal Licensing System directly in your terminal — with color output, clickable links, and a clean table layout.
Links are clickable in iTerm2, WezTerm, Windows Terminal, Kitty, and other OSC 8-capable terminals.
brew install binarynoir/callrx/callrxOr tap first, then install:
brew tap binarynoir/callrx
brew install callrxUpgrade later with brew upgrade callrx. The formula installs the prebuilt
release binary for your platform — no Rust toolchain required.
Grab the latest binary for your platform from the Releases page:
| Platform | File |
|---|---|
| macOS (Apple Silicon) | callrx-vX.Y.Z-aarch64-apple-darwin.tar.gz |
| macOS (Intel) | callrx-vX.Y.Z-x86_64-apple-darwin.tar.gz |
| Linux x86_64 | callrx-vX.Y.Z-x86_64-unknown-linux-gnu.tar.gz |
| Linux ARM64 | callrx-vX.Y.Z-aarch64-unknown-linux-gnu.tar.gz |
| Windows | callrx-vX.Y.Z-x86_64-pc-windows-msvc.zip |
macOS / Linux:
tar -xzf callrx-*.tar.gz
sudo mv callrx /usr/local/bin/
callrx --versionWindows: extract the .zip and add the folder to your PATH.
git clone https://github.com/binarynoir/callrx
cd callrx
cargo build --release
./target/release/callrx --versionRequires Rust (stable toolchain, 1.75+).
callrx [CALLSIGN]
callrx lookup <CALLSIGN> [OPTIONS]
callrx history <CALLSIGN> [--raw]
callrx completions <SHELL>
OPTIONS:
--json Output raw JSON from callook.info
--raw Plain text output (no color, no formatting)
--no-links Disable clickable hyperlinks
--no-cache Bypass the local cache; always fetch fresh data
--help Print help
--version Print version
SHELLS: bash, zsh, fish, elvish, powershellExamples:
callrx W1AW # Quick lookup (served from cache if fresh)
callrx lookup KD9ABC # Via subcommand
callrx lookup W1AW --json # Raw JSON (pipe to jq)
callrx lookup W1AW --raw # Plain text (pipe to grep)
callrx lookup W1AW --no-cache # Force a fresh API fetch
callrx lookup W1AW | grep Grid # Colors stripped when piped
callrx history W1AW # Show all past lookups of W1AW
callrx history W1AW --raw # History as plain text (for scripts)callrx caches every successful lookup in a local SQLite database for 7 days
(matching callook.info's weekly FCC sync schedule). Subsequent lookups for the
same callsign are served instantly from the cache and show a "Cached X ago"
note in the output.
The cache database lives at:
| Platform | Path |
|---|---|
| macOS | ~/Library/Caches/callrx/callrx.db |
| Linux | ~/.cache/callrx/callrx.db |
| Windows | %LOCALAPPDATA%\callrx\callrx.db |
Use --no-cache to force a fresh fetch. The fresh result is still written
back to the cache so the next lookup benefits from it.
Every successful lookup — whether served from the cache or fetched live — is
recorded in the local SQLite database. Use callrx history <CALLSIGN> to see
when a callsign was last looked up:
callrx history W1AWW1AW · 3 lookups
2026-06-11 10:30 live just now
2026-06-10 09:15 cached 1 day ago
2026-06-09 14:22 live 2 days agolive means the data was fetched fresh from callook.info; cached means it
was served from the local cache. Use --raw for plain text output suitable
for scripting.
Generate and install a completion script for your shell:
zsh:
callrx completions zsh > ~/.zsh/completions/_callrx
# Ensure ~/.zsh/completions is in your $fpath (add to ~/.zshrc if needed):
# fpath=(~/.zsh/completions $fpath)
# autoload -Uz compinit && compinitbash:
# Add to ~/.bashrc to load on every session:
eval "$(callrx completions bash)"fish:
callrx completions fish > ~/.config/fish/completions/callrx.fishPowerShell:
callrx completions powershell >> $PROFILEData comes from callook.info, which mirrors the FCC Universal Licensing System (ULS) and updates weekly. callook.info is not affiliated with the ARRL or the FCC — it is an independent service.
For the authoritative FCC record, click the ULS Record link in the output.
callrx would not exist without callook.info and its clean,
free JSON API. It is built and maintained by Josh Dick
(W1JDD, joshdick.net) as a
service to the ham radio community.
If callrx is useful to you, please consider
donating to callook.info to help Josh cover
hosting costs and keep the service running. 73!
OSC 8 hyperlinks work in:
- iTerm2 (macOS)
- WezTerm (macOS, Windows, Linux)
- Windows Terminal v1.4+
- Kitty
- GNOME Terminal 3.26+
- Most VTE-based terminals
Links degrade gracefully to plain text in unsupported terminals or when output is piped.
Requires the stable Rust toolchain (pinned in rust-toolchain.toml).
# Build
cargo build # debug build
cargo build --release # optimized binary at target/release/callrx
# Run
cargo run -- W1AW # run against a callsign
cargo run -- W1AW --json # the shorthand accepts the same flags as `lookup`
# Test
cargo test
# Lint & format (matches CI)
cargo fmt --check
cargo clippy --all-targets -- -D warningsCI (.github/workflows/ci.yml) runs fmt, clippy -D warnings, build, and
test on Linux, macOS, and Windows for every push and pull request. It can also
be run on demand from the Actions tab.
Versioning is automated with release-please
and driven by Conventional Commits — you
don't edit the version in Cargo.toml by hand.
-
Merge work into
mainusing conventional commit messages:Commit prefix Effect fix: …patch bump (0.1.0 → 0.1.1) feat: …minor bump (0.1.0 → 0.2.0) feat!: …/BREAKING CHANGE:major bump (0.1.0 → 1.0.0) chore:docs:refactor:ci:no release on their own -
release-please opens and maintains a Release PR that bumps
Cargo.toml+Cargo.lockand updatesCHANGELOG.md. Review and merge it when you're ready to ship. -
On merge it creates the
vX.Y.Ztag and a GitHub Release (notes from the changelog), builds binaries for all platforms and attaches them, then regenerates the Homebrew tap formula sobrew upgrade callrxpicks up the new version.
Build targets: macOS (Apple Silicon + Intel), Linux (x86_64, ARM64, ARMv7), and Windows x86_64.
Manual / re-release: the Release workflow can also be run from the
Actions tab ("Run workflow" → enter an existing tag), or triggered by pushing
a v* tag directly.
One-time setup:
- In Settings → Actions → General, enable "Allow GitHub Actions to create and approve pull requests" so release-please can open the Release PR.
- Add a
HOMEBREW_TAP_TOKENrepo secret: a fine-grained PAT (or classic token withreposcope) that can push tobinarynoir/homebrew-callrx. Theupdate-homebrew.ymlworkflow uses it to commit the regenerated formula to the tap. The defaultGITHUB_TOKENcannot write to another repository.
MIT
