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.
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 pytestbefore opening a pull request - Open a pull request with a clear description of the change
License
MIT — see LICENSE for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d228f9a629d80b25f92968fa9e7502c8854e157d17207f4cc5a68eaedf519b2a
|
|
| MD5 |
6cffa11f6d5f33cba14a806b261fdbf0
|
|
| BLAKE2b-256 |
62575c80d7f4aa1d218f876e3e10c648153562b03e65f35088a31c219efa89a8
|
Provenance
The following attestation bundles were made for open_packet-0.1.0.tar.gz:
Publisher:
publish.yaml on loredous/open-packet
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
open_packet-0.1.0.tar.gz -
Subject digest:
d228f9a629d80b25f92968fa9e7502c8854e157d17207f4cc5a68eaedf519b2a - Sigstore transparency entry: 2132379003
- Sigstore integration time:
-
Permalink:
loredous/open-packet@b6ca20fbd91c091a1b54c05f6397c9ad7229c325 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/loredous
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yaml@b6ca20fbd91c091a1b54c05f6397c9ad7229c325 -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b76ce2cbe09cfeb08e1b861f67f050182aacc2e2f42e79e0a23603582ded8942
|
|
| MD5 |
b35b4525fd4e10e16d0a6c689bfc6352
|
|
| BLAKE2b-256 |
0a12d463166485f21bdd379c87d6adbd364081031b52341d90533efe77de7afd
|
Provenance
The following attestation bundles were made for open_packet-0.1.0-py3-none-any.whl:
Publisher:
publish.yaml on loredous/open-packet
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
open_packet-0.1.0-py3-none-any.whl -
Subject digest:
b76ce2cbe09cfeb08e1b861f67f050182aacc2e2f42e79e0a23603582ded8942 - Sigstore transparency entry: 2132379120
- Sigstore integration time:
-
Permalink:
loredous/open-packet@b6ca20fbd91c091a1b54c05f6397c9ad7229c325 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/loredous
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yaml@b6ca20fbd91c091a1b54c05f6397c9ad7229c325 -
Trigger Event:
release
-
Statement type: