Skip to main content

Contact - A Console UI for Meshtastic

Powered by Meshtastic.org

Install with:

pip install contact

This Python curses client for Meshtastic is a terminal-based client designed to manage device settings, enable mesh chat communication, and handle configuration backups and restores.

Contact - Main UI Screenshot



The settings dialogue can be accessed within the client or may be run standalone to configure your node by launching contact --settings or contact -c

Screenshot 2025-04-08 at 6 10 06 PM

Docker install

Install with Docker:

docker build -t contact .

# Change /tmp/data to a directory you'd like to persist the database in
export DATA_DIR="/tmp/contact"

mkdir -p "$DATA_DIR"
docker run -it --rm -v $DATA_DIR:/data --workdir /data --device=/dev/ttyUSB0 contact --port /dev/ttyUSB0

Message Persistence

All messages will saved in a SQLite DB and restored upon relaunch of the app. You may delete client.db if you wish to erase all stored messages and node data. If multiple nodes are used, each will independently store data in the database, but the data will not be shared or viewable between nodes.

Client Configuration

By navigating to Settings -> App Settings, you may customize your UI's icons, colors, and more!

Notification sounds

Add audio files to Contact's contact/sounds/ folder, then choose one in Settings → App Settings → Notification sound. alert.mp3 is the default selection; choose None to disable notification audio. Supported file types are MP3, WAV, OGG, AIFF, and FLAC.

Remote administration

With the Nodes pane selected, press ` or F12 and choose Remote admin for the highlighted node. Contact requests the node's settings through Meshtastic Remote Admin and displays an error if the node does not authorize your public key. Remote App Settings are intentionally unavailable because they apply only to the local Contact client.

For smaller displays you may wish to enable single_pane_mode:

Screenshot 2025-08-22 at 11 15 54 PM

Commands

  • CTRL + k = display a list of commands.
  • ↑→↓← = Navigate around the UI.
  • F1/F2/F3 = Jump to Channel/Messages/Nodes
  • ENTER = Send a message typed in the Input Window, or with the Node List highlighted, select a node to DM
  • ` or F12 = Open the Settings dialogue
  • CTRL + p = Hide/show a log of raw received packets.
  • CTRL + t or F4 = With the Node List highlighted, send a traceroute to the selected node
  • F5 = Display a node's info
  • CTRL + f = With the Node List highlighted, favorite the selected node
  • CTRL + g = With the Node List highlighted, ignore the selected node
  • CTRL + d = With the Channel List hightlighted, archive a chat to reduce UI clutter. Messages will be saved in the db and repopulate if you send or receive a DM from this user.
  • CTRL + d = With the Note List highlghted, remove a node from your nodedb.
  • ESC = Exit out of the Settings Dialogue, or Quit the application if settings are not displayed.
  • Press CTRL + / while the nodes or channels window is highlighted to start search
  • Type text to search as you type, first matching item will be selected, starting at current selected index
  • Press Tab to find next match starting from the current index - search wraps around if necessary
  • Press Esc or Enter to exit search mode

Arguments

You can pass the following arguments to the client:

Connection Arguments

Optional arguments to specify a device to connect to and how.

  • --port, --serial, -s: The port to connect to via serial, e.g. /dev/ttyUSB0.
  • --host, --tcp, -t: The hostname or IP address to connect to using TCP, will default to localhost if no host is passed.
  • --ble, -b: The BLE device MAC address or name to connect to.
  • --settings, --set, --control, -c: Launch directly into the settings.
  • --help, -h: Show usage and available options, then exit.
  • --version, -V: Show the application version, then exit.

If no connection arguments are specified, the client will attempt a serial connection and then a TCP connection to localhost.

Choose at most one connection type. Connection options also apply to control mode, for example contact --control --host mesh.local. The standalone python -m contact.settings command accepts the same options. Help and version exit with status 0; invalid arguments print an error to stderr and exit with status 2 before starting the UI.

Example Usage

contact --port /dev/ttyUSB0
contact --host 192.168.1.1
contact --ble BlAddressOfDevice
contact --port COM3

To quickly connect to localhost, use:

contact -t

Install in development (editable) mode:

git clone https://github.com/pdxlocations/contact.git
cd contact
python3 -m venv .venv
source .venv/bin/activate
pip install -e .

Metadata

Release files for contact 1.7.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for contact 1.7.1
File Size Uploaded
contact-1.7.1.tar.gz 166.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for contact 1.7.1
File Interpreter ABI Platform
contact-1.7.1-py3-none-any.whl Python 3 none any Details

Total release size: 345.8 kB

Release files / contact-1.7.1.tar.gz

Download URL contact-1.7.1.tar.gz
Size 166.5 kB
Tags Source
SHA-256 checksum
How to use checksums
c05dd3601d1f256c11385a7fa94444009ef23ae3a5f98c582846f6ed8b4025b5
BLAKE2b-256 checksum
How to use checksums
c64980dd76da6c3b98c8486666ae8996f502b78ba42dc5869926eacb559b6091
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release files / contact-1.7.1-py3-none-any.whl

Download URL contact-1.7.1-py3-none-any.whl
Size 179.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5f8a7a023f748dffe656e02bef221ea2796ba15e4a370f6fa0a6f61b68f8a477
BLAKE2b-256 checksum
How to use checksums
96350e406920c4c61849329b66a751f06f3d61f80c403e920dc574a3c68addbe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.7.1 This release

2 release files

1.7.0

2 release files

1.6.13

2 release files

1.6.9

2 release files

1.6.8

2 release files

1.6.7

2 release files

1.6.6

2 release files

1.6.5

2 release files

1.6.4

2 release files

1.6.2

2 release files

1.6.1

2 release files

1.6.0

2 release files

1.5.14

2 release files

1.5.12

2 release files

1.5.11

2 release files

1.5.10

2 release files

1.5.9

2 release files

1.5.8

2 release files

1.5.7

2 release files

1.5.6

2 release files

1.5.5

2 release files

1.5.4

2 release files

1.5.3

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.23

2 release files

1.4.22

2 release files

1.4.21

2 release files

1.4.20

2 release files

1.4.19

2 release files

1.4.18

2 release files

1.4.16

2 release files

1.4.15

2 release files

1.4.14

2 release files

1.4.13

2 release files

1.4.12

2 release files

1.4.11

2 release files

1.4.7

2 release files

1.4.6

2 release files

1.4.5

2 release files

1.4.4

2 release files

1.4.3

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.17

2 release files

1.3.16

2 release files

1.3.15

2 release files

1.3.14

2 release files

1.3.13

2 release files

1.3.12

2 release files

1.3.11

2 release files

1.3.10

2 release files

1.3.9

2 release files

1.3.8

2 release files

1.3.7

2 release files

1.3.6

2 release files

1.3.5

2 release files

1.3.4

2 release files

1.3.3

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.0.5

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page