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-0.1.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-0.1.0-py3-none-any.whl (96.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: open_packet-0.1.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-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d228f9a629d80b25f92968fa9e7502c8854e157d17207f4cc5a68eaedf519b2a
MD5 6cffa11f6d5f33cba14a806b261fdbf0
BLAKE2b-256 62575c80d7f4aa1d218f876e3e10c648153562b03e65f35088a31c219efa89a8

See more details on using hashes here.

Provenance

The following attestation bundles were made for open_packet-0.1.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-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: open_packet-0.1.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-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b76ce2cbe09cfeb08e1b861f67f050182aacc2e2f42e79e0a23603582ded8942
MD5 b35b4525fd4e10e16d0a6c689bfc6352
BLAKE2b-256 0a12d463166485f21bdd379c87d6adbd364081031b52341d90533efe77de7afd

See more details on using hashes here.

Provenance

The following attestation bundles were made for open_packet-0.1.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