Skip to main content

RadioShaq: Ham Radio AI Orchestration and Remote SDR Reception System

Project description

RadioShaq

Strategic Ham Radio Autonomous Query and Kontrol System

An AI-powered orchestrator for ham radio operations, emergency communications, and field-to-HQ coordination. One install gives you the API, web UI, and optional remote SDR receiver.


Install

pip install radioshaq

Optional (for SDR hardware): pip install radioshaq[sdr] (RTL-SDR) or radioshaq[hackrf] (HackRF).

Requirements: Python 3.11+

License notice: RadioShaq is distributed under GPL-2.0-only. Official CLI and web UI require explicit license acceptance before normal use.


Easiest way to get started: interactive setup

From a project directory (or the repo root), run:

radioshaq setup

This walks you through:

  • Mode — field, hq, or receiver
  • Database — use Docker Postgres or an existing URL
  • Secrets — JWT secret, LLM API key (optional)
  • Config — writes .env and config.yaml, can start Docker and run migrations

Minimal prompts: radioshaq setup --quick (mode + “use Docker?” then defaults).

Non-interactive (CI/scripts): radioshaq setup --no-input --mode field (optionally --db-url postgresql://...).

Reconfigure: radioshaq setup --reconfigure to update existing config without starting over.


Run the API and web UI

radioshaq run-api

Default host: 0.0.0.0, port: 8000. Override with --host and --port.


Get a token (auth)

Most API calls need a Bearer JWT:

radioshaq token --subject op1 --role field --station-id STATION-01

Then set RADIOSHAQ_TOKEN to the printed value, or pass it in requests. Roles: field, hq, receiver.

Check API from the CLI:

radioshaq health
radioshaq health --ready

CLI at a glance

Command What it does
setup
radioshaq setup Interactive setup: .env, config.yaml, optional Docker and migrations
radioshaq setup --quick Minimal prompts (mode, use Docker?), then defaults
radioshaq setup --no-input --mode field Non-interactive for CI; optional --db-url, --config-dir
radioshaq setup --reconfigure Update existing config (merge sections)
Server & auth
radioshaq run-api Start FastAPI server (and web UI at /). Options: --host, --port, --reload
radioshaq run-receiver Start remote SDR receiver (port 8765). Set JWT_SECRET, STATION_ID, HQ_URL
radioshaq token Get JWT. Options: --subject, --role, --station-id, --base-url
radioshaq health Liveness check; radioshaq health --ready for readiness
Callsigns (require RADIOSHAQ_TOKEN)
radioshaq callsigns list List registered callsigns
radioshaq callsigns add <callsign> Register a callsign
radioshaq callsigns remove <callsign> Remove from whitelist
radioshaq callsigns register-from-audio <file> Register from audio (ASR)
Messages
radioshaq message process <text> Send message through REACT orchestrator
radioshaq message inject <text> Inject into RX path (demo). Options: --band, --mode, --source-callsign
radioshaq message whitelist-request <text> Whitelist request (orchestrator + optional TTS)
radioshaq message relay <msg> --source-band X --target-band Y Relay message between bands
Transcripts
radioshaq transcripts list List transcripts. Options: --callsign, --band, --since, --limit
radioshaq transcripts get <id> Get one transcript
radioshaq transcripts play <id> Play transcript as TTS over radio
Radio
radioshaq radio bands List bands
radioshaq radio send-tts <message> Send TTS over radio. Options: --frequency-hz, --mode

Use radioshaq --help and radioshaq <command> --help for options. API base URL: RADIOSHAQ_API (default http://localhost:8000).


Remote receiver (SDR listen-only)

For a listen-only station (e.g. Raspberry Pi + RTL-SDR) that streams to HQ:

pip install radioshaq[sdr]   # or radioshaq[hackrf] for HackRF
export JWT_SECRET=your-secret
export STATION_ID=RECEIVER-01
export HQ_URL=http://your-hq:8000
radioshaq run-receiver

HQ accepts uploads at POST /receiver/upload (Bearer JWT). Default receiver port: 8765 (--port to change).


After install (no interactive setup)

If you prefer to configure by hand:

  1. Database: Set DATABASE_URL or POSTGRES_* (and run migrations with your Alembic config).
  2. Config: Copy config.example.yaml to config.yaml and set mode, database, auth, etc. See Configuration.
  3. Start: radioshaq run-api.

Documentation


License

GPL-2.0-only

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

radioshaq-0.1.2.dev202603062028.tar.gz (290.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

radioshaq-0.1.2.dev202603062028-py3-none-any.whl (348.4 kB view details)

Uploaded Python 3

File details

Details for the file radioshaq-0.1.2.dev202603062028.tar.gz.

File metadata

File hashes

Hashes for radioshaq-0.1.2.dev202603062028.tar.gz
Algorithm Hash digest
SHA256 e1737679db349e7c933c1ff1f615107d67f0052a9c38409c9fe15714ecf85150
MD5 432e42800651c00ed875d874ee1b09c6
BLAKE2b-256 81c49858f8d133e2b06a923284b337be01d648921b00e68bf16b391c96dec251

See more details on using hashes here.

Provenance

The following attestation bundles were made for radioshaq-0.1.2.dev202603062028.tar.gz:

Publisher: publish-nightly.yml on Josephrp/radioshaq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file radioshaq-0.1.2.dev202603062028-py3-none-any.whl.

File metadata

File hashes

Hashes for radioshaq-0.1.2.dev202603062028-py3-none-any.whl
Algorithm Hash digest
SHA256 f5bbdbe0a98fa64b12151a639f290aa0e68724817b7801ef278e3179439e24d1
MD5 bb4b049b90b8ae911fb6b47b17b57270
BLAKE2b-256 bb178af8661e883b78bf4d42348d137eeaa93b5b799e43b54ebe3eb1c04ed1b7

See more details on using hashes here.

Provenance

The following attestation bundles were made for radioshaq-0.1.2.dev202603062028-py3-none-any.whl:

Publisher: publish-nightly.yml on Josephrp/radioshaq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page