Skip to main content

Amateur radio packet messaging client

Project description

open-packet

An open-source packet messaging client for amateur radio operators.

Early development: v0.1 — expect breaking changes between releases.

Screenshot of the open-packet terminal UI showing the message inbox


Quickstart

Requirements:

  • Linux (Windows and MacOS are currently untested, but should probably work)
  • Python >= 3.11
  • A KISS-capable TNC connected via TCP or serial port. If you don't have hardware, Direwolf is a good software TNC.

Install:

uv tool install git+https://github.com/loredous/open-packet

Configure:

Create ~/.config/open-packet/config.yaml:

connection:
  type: kiss_tcp          # kiss_tcp | kiss_serial
  host: localhost         # TCP only
  port: 8001              # TCP only

Run:

open-packet

On first launch, you'll be prompted to enter your callsign and BBS node details. You can update these later via the Settings screen (s).


How It Works

open-packet connects to a BBS node over AX.25 packet radio via a KISS TNC, syncing your personal messages and bulletins to a local SQLite database. The core engine is interface-agnostic — the terminal client is the first frontend, with a web client and other interfaces planned.


Configuration

The config file lives at ~/.config/open-packet/config.yaml (or pass a custom path as the first argument to open-packet).

connection:
  type: kiss_tcp          # kiss_tcp | kiss_serial
  host: localhost         # TCP only
  port: 8001              # TCP only
  # device: /dev/ttyUSB0  # serial only
  # baud: 9600            # serial only

store:
  db_path: ~/.local/share/open-packet/messages.db    # SQLite message database
  export_path: ~/.local/share/open-packet/export     # flat-file export directory

ui:
  console_visible: false       # show AX.25 frame console on startup
  console_buffer: 500          # number of lines to keep in the console ring buffer
  # console_log: ~/.local/share/open-packet/console.log  # log frame traffic to file (omit to disable)

Operator identity (callsign, SSID) and BBS node configuration are managed interactively through the TUI rather than in the config file. Access them via the Settings screen (s).


Development

# Clone and install dependencies
git clone https://github.com/loredous/open-packet.git
cd open-packet
uv sync

# Run the app
uv run open-packet

# Run tests
uv run pytest

# Run with Textual's dev tools (live reload + DOM inspector)
# Note: this launches OpenPacketApp directly, bypassing main() — config loads from the default path
uv run textual run --dev open_packet/ui/tui/app.py

Contributing

Contributions are welcome.

  • Fork the repo and create a feature branch
  • Write tests for new functionality
  • Run uv run pytest before opening a pull request
  • Open a pull request with a clear description of the change

License

MIT — see LICENSE for details.

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

open_packet-1.0.0.tar.gz (3.0 MB view details)

Uploaded Source

Built Distribution

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

open_packet-1.0.0-py3-none-any.whl (96.5 kB view details)

Uploaded Python 3

File details

Details for the file open_packet-1.0.0.tar.gz.

File metadata

  • Download URL: open_packet-1.0.0.tar.gz
  • Upload date:
  • Size: 3.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for open_packet-1.0.0.tar.gz
Algorithm Hash digest
SHA256 4469ed0ec927bb7f95055eb6f45c147da44a55df5d40209f37461197312d5405
MD5 90cbb5093f9aa7f90a1cf3e4fe760ce5
BLAKE2b-256 c1e15e62d69c456d9f42d7a0e2ba0dd96b3d141d6017c7acad9edd6002bf9a3d

See more details on using hashes here.

Provenance

The following attestation bundles were made for open_packet-1.0.0.tar.gz:

Publisher: publish.yaml on loredous/open-packet

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

File details

Details for the file open_packet-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: open_packet-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 96.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for open_packet-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f9174700d350b57d4204ada607e84af05671fe46edb4ea48d7f4af81a71c0272
MD5 4ad646f4f9e7a09ca9228a5945adbb4a
BLAKE2b-256 0f262592206ea4a90aebfbe3fd03c4ef4667aeb9bf79f877bcb4854b7abb1f67

See more details on using hashes here.

Provenance

The following attestation bundles were made for open_packet-1.0.0-py3-none-any.whl:

Publisher: publish.yaml on loredous/open-packet

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