{"id":29552538,"url":"https://github.com/dearabhin/bitchat-cli","last_synced_at":"2026-07-16T04:31:28.181Z","repository":{"id":303712739,"uuid":"1016429977","full_name":"dearabhin/bitchat-cli","owner":"dearabhin","description":"This is a Python-based, command-line implementation of \"bitchat\", a secure, decentralized, peer-to-peer messaging app that works over Bluetooth mesh networks. This version is designed to be compatible with the original Swift application's protocol.","archived":false,"fork":false,"pushed_at":"2025-07-09T07:39:56.000Z","size":50,"stargazers_count":20,"open_issues_count":1,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-19T09:32:14.918Z","etag":null,"topics":["bitchat","bitchat-cli","bitchat-python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dearabhin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-09T02:27:14.000Z","updated_at":"2025-10-12T01:21:33.000Z","dependencies_parsed_at":"2025-07-09T03:34:30.387Z","dependency_job_id":"992762b5-314c-4a9e-b9db-4ee57388dc87","html_url":"https://github.com/dearabhin/bitchat-cli","commit_stats":null,"previous_names":["dearabhin/bitchat-cli"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dearabhin/bitchat-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dearabhin%2Fbitchat-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dearabhin%2Fbitchat-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dearabhin%2Fbitchat-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dearabhin%2Fbitchat-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dearabhin","download_url":"https://codeload.github.com/dearabhin/bitchat-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dearabhin%2Fbitchat-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35531123,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-16T02:00:06.687Z","response_time":83,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bitchat","bitchat-cli","bitchat-python"],"created_at":"2025-07-18T05:10:41.185Z","updated_at":"2026-07-16T04:31:28.176Z","avatar_url":"https://github.com/dearabhin.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# bitchat-cli\n\n**Serverless, peer-to-peer chat over a Bluetooth LE mesh — right in your terminal.**\n\nWire-compatible with the [bitchat](https://github.com/permissionlesstech/bitchat) app for **public chat**:\nexchange text, images, voice notes, and files one hop with a real bitchat phone in range.\n\n[![PyPI version](https://img.shields.io/pypi/v/bitchat-cli?style=flat-square\u0026logo=pypi\u0026logoColor=white\u0026color=2ea44f)](https://pypi.org/project/bitchat-cli/)\n[![Python versions](https://img.shields.io/pypi/pyversions/bitchat-cli?style=flat-square\u0026logo=python\u0026logoColor=white)](https://pypi.org/project/bitchat-cli/)\n[![GitHub stars](https://img.shields.io/github/stars/dearabhin/bitchat-cli?style=flat-square\u0026logo=github\u0026color=yellow)](https://github.com/dearabhin/bitchat-cli/stargazers)\n[![Publish](https://img.shields.io/github/actions/workflow/status/dearabhin/bitchat-cli/publish.yml?style=flat-square\u0026logo=githubactions\u0026logoColor=white\u0026label=publish)](https://github.com/dearabhin/bitchat-cli/actions/workflows/publish.yml)\n[![Latest release](https://img.shields.io/github/v/release/dearabhin/bitchat-cli?style=flat-square\u0026logo=github\u0026color=orange)](https://github.com/dearabhin/bitchat-cli/releases)\n[![License: GPL-3.0](https://img.shields.io/badge/license-GPL--3.0-blue?style=flat-square)](LICENSE)\n![Platforms](https://img.shields.io/badge/platform-Linux%20%7C%20macOS%20%7C%20Windows-lightgrey?style=flat-square)\n[![PRs welcome](https://img.shields.io/badge/PRs-welcome-brightgreen?style=flat-square)](#-contributing)\n\n\u003cimg src=\"https://raw.githubusercontent.com/dearabhin/bitchat-cli/main/bitchat.png\" alt=\"bitchat-cli terminal UI\" width=\"660\"\u003e\n\n\u003c/div\u003e\n\n---\n\n## ✨ Features\n\n- 🛰️ **Serverless \u0026 decentralized** — no internet, accounts, or servers. Just Bluetooth.\n- 📡 **Talks to the real app** — interoperates with [bitchat](https://github.com/permissionlesstech/bitchat) on iOS/Android for public/broadcast chat.\n- 🖼️ **Media support** — send and receive **images, voice notes, and files** (`/send \u003cpath\u003e`); received media is saved to `~/.bitchat/downloads/` and opened automatically.\n- 🔐 **Signed messages** — every packet is Ed25519-signed, matching the format the app requires.\n- 🎨 **Themed terminal UI** — timestamps, a stable color per peer, and clear status glyphs. Honors `NO_COLOR`.\n- 🐍 **Pure Python** — built on [`bleak`](https://github.com/hbldh/bleak), runs on Linux, macOS, and Windows.\n\n## 📦 Installation\n\n\u003e Requires **Python 3.8+** and a working **Bluetooth LE** adapter.\n\n**From PyPI (recommended):**\n\n```bash\npip install bitchat-cli\n```\n\n**From source:**\n\n```bash\ngit clone https://github.com/dearabhin/bitchat-cli.git\ncd bitchat-cli\npip install -e .\n```\n\n## 🚀 Usage\n\nOnce installed, launch it from anywhere:\n\n```bash\nbitchat          # or: bitchat-cli\n```\n\nFrom a source checkout you can also run `python -m bitchat_cli`.\n\nIt immediately starts scanning for nearby bitchat peers, connects to any in range, and broadcasts whatever you type. Type a message and press **Enter** to send it publicly.\n\n## 💬 Commands\n\n| Command | Description |\n| --- | --- |\n| `\u003cmessage\u003e` | Any text not starting with `/` is broadcast publicly to peers. |\n| `/send \u003cpath\u003e` | Send an image, voice note, or file to peers (alias: `/file`). |\n| `/w` | List known peers (peer ID → nickname). |\n| `/name \u003cnickname\u003e` | Change your nickname and re-announce. |\n| `/clear` | Clear the screen. |\n| `/help` | Show the list of available commands. |\n\n## 🔧 How it works\n\nbitchat-cli uses [`bleak`](https://github.com/hbldh/bleak) as a BLE **central** that discovers, connects to, and exchanges packets with real bitchat peers in range. It implements bitchat's binary wire protocol — announce / leave / public-message / file-transfer packets, PKCS#7 padding, fragment reassembly, and Ed25519 packet signing — so it can take part in **public chat** with the official app.\n\n\u003e [!NOTE]\n\u003e **Scope \u0026 limitations.** Only public/broadcast chat is supported. Private (Noise-encrypted) messaging, multi-hop mesh relaying, and advertising as a BLE **peripheral** are not implemented — `bleak` is central-only, so this client works one hop with peers it is connected to and is not itself discoverable when idle.\n\n## 🧪 Protocol self-test\n\nVerify the wire-protocol implementation without any Bluetooth hardware (needs only `cryptography`):\n\n```bash\npython selftest.py\n```\n\nRun it from a source checkout — it imports the `bitchat_cli` package and covers packet encode/decode, signatures, fragmentation, and the media file format.\n\n## 🤝 Contributing\n\nContributions are welcome!\n\n1. Fork the repository and clone your fork.\n2. Install in editable mode: `pip install -e .`\n3. Create a branch, make your change, and run `python selftest.py`.\n4. Open a Pull Request with a clear description.\n\n## 🙌 Credits\n\nAn independent Python port of [**bitchat**](https://github.com/permissionlesstech/bitchat) — the serverless BLE-mesh chat app. All the wire-format credit belongs to the upstream project; this CLI just speaks its language.\n\n## 📄 License\n\nReleased under the [GNU GPL-3.0](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdearabhin%2Fbitchat-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdearabhin%2Fbitchat-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdearabhin%2Fbitchat-cli/lists"}