# BitChat Python
A Python implementation of the BitChat decentralized, peer-to-peer, encrypted chat application over BLE.
*This project is a fork of [bitchat-python](https://github.com/kaganisildak/bitchat-python). This fork contains improvements that possibly not yet merged to original project.*
*This project is a rewrite of the [original Rust-based `bitchat-terminal`](https://github.com/ShilohEye/bitchat-terminal).*
## Table of contents
* [Installation](#installation)
* [Usage](#usage)
* [Simple start](#simple-start)
* [CLI startup options](#cli-startup-args)
* [BitChat Commands](#bitchat-commands)
* [Clone, Develop and Build](#clone-develop-and-build)
* [Setup environment](#clone-and-setup-editable-environment-using-uv)
* [Build](#build-sdist-and-wheel)
## Installation
With pip
```shell
pip install pybitchat
```
With [`uv` package and project manager](https://docs.astral.sh/uv/)
```Shell
uv tool install pybitchat
```
With [`pipx` standalone python apps panager](https://github.com/pypa/pipx)
```Shell
pipx install pybitchat
```
## Usage
### Simple start
Installed with `pip`, `uv tool`, `pipx`
```Shell
bitchat-python
```
With `uvx` command
> [!NOTE]
> This will only work once the project is published to the PyPI index.
```Shell
uvx bitchat-python
```
### CLI startup options
```shell
-h, --help show this help message and exit
-d, --debug enable BASIC debug (connection info)
-v, --verbose enable FULL debug (verbose output)
-u, --usage show usage info
-V, --version show program`s version number and exit
--log [LOG] log file path. If no path is provided, logs to 'bitchat.log'. If --log is omitted, no logging occurs.
```
### BitChat Commands
This section details the various commands available within BitChat.
```shell
General Commands
* `/help` : Show this help menu
* `/h` : Alias for /help
* `/me` : Get your Nickname and peer_id
* `/name <name>` : Change your nickname
* `/status` : Show connection info
* `/clear` : Clear the screen
* `/exit` : Quit BitChat
Navigation Commands
* `1-9` : Quick switch to conversation
* `/list` : Show all conversations
* `/switch` : Interactive conversation switcher
* `/public` : Go to public chat
Messaging Commands
(Type normally to send in current mode)
* `/dm <name>` : Start private conversation
* `/dm <name> <msg>` : Send quick private message
* `/reply` : Reply to last private message
Channel Commands
* `/j #channel` : Join or create a channel
* `/j #channel <password>` : Join with password
* `/leave` : Leave current channel
* `/pass <pwd>` : Set channel password (owner only)
* `/transfer @user` : Transfer ownership (owner only)
Discovery Commands
* `/channels` : List all discovered channels
* `/online` : Show who`s online
* `/w` : Alias for `/online`
Privacy & Security Commands
* `/block @user` : Block a user
* `/block` : List blocked users
* `/unblock @user` : Unblock a user
```
## Clone, Develop and Build
> [!TIP]
> [`uv` package and project manager](https://docs.astral.sh/uv/) usage recommended for this step
### Clone and setup editable environment using `uv`
```Shell
git clone https://github.com/o-murphy/pybitchat.git
cd bitchat-python
uv sync --dev
.venv/bin/activate
```
### Type checking with
```Shell
uv run mypy
```
### Linting and Formatting
Lint
```Shell
uv run ruff check
```
Format
```Shell
uv run ruff format
```
### Build sdist and wheel
```Shell
uv build
```
[//]: # (Old README.md content)
[//]: # (pip install bleak>=0.22.3 cryptography>=44.0.0 lz4>=4.3.3 aioconsole>=0.8.1 pybloom-live>=4.0.0)
Raw data
{
"_id": null,
"home_page": null,
"name": "pybitchat",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "bitchat, BLE, BLE-mesh, IRC-vibes, chat-application, p2p-chat",
"author": "Ka\u011fan I\u015eILDAK, Dmytro Yaroshenko",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/68/e3/969596e623c259ecc411a7dd7a793724ebb43910879c7c5adfee53e1a9c0/pybitchat-0.1.0.tar.gz",
"platform": null,
"description": "# BitChat Python\n\nA Python implementation of the BitChat decentralized, peer-to-peer, encrypted chat application over BLE.\n\n*This project is a fork of [bitchat-python](https://github.com/kaganisildak/bitchat-python). This fork contains improvements that possibly not yet merged to original project.*\n\n*This project is a rewrite of the [original Rust-based `bitchat-terminal`](https://github.com/ShilohEye/bitchat-terminal).*\n\n## Table of contents\n* [Installation](#installation)\n* [Usage](#usage)\n * [Simple start](#simple-start)\n * [CLI startup options](#cli-startup-args)\n * [BitChat Commands](#bitchat-commands)\n* [Clone, Develop and Build](#clone-develop-and-build)\n * [Setup environment](#clone-and-setup-editable-environment-using-uv)\n * [Build](#build-sdist-and-wheel)\n\n## Installation\nWith pip\n```shell\npip install pybitchat\n```\n\nWith [`uv` package and project manager](https://docs.astral.sh/uv/)\n```Shell\nuv tool install pybitchat\n```\n\nWith [`pipx` standalone python apps panager](https://github.com/pypa/pipx)\n```Shell\npipx install pybitchat\n```\n\n\n## Usage\n\n### Simple start\nInstalled with `pip`, `uv tool`, `pipx` \n```Shell\nbitchat-python\n```\n\nWith `uvx` command\n> [!NOTE]\n> This will only work once the project is published to the PyPI index.\n```Shell\nuvx bitchat-python\n```\n\n### CLI startup options\n```shell\n -h, --help show this help message and exit\n -d, --debug enable BASIC debug (connection info)\n -v, --verbose enable FULL debug (verbose output)\n -u, --usage show usage info\n -V, --version show program`s version number and exit\n --log [LOG] log file path. If no path is provided, logs to 'bitchat.log'. If --log is omitted, no logging occurs.\n```\n\n### BitChat Commands\n\nThis section details the various commands available within BitChat.\n```shell\nGeneral Commands\n\n* `/help` : Show this help menu\n* `/h` : Alias for /help\n* `/me` : Get your Nickname and peer_id\n* `/name <name>` : Change your nickname\n* `/status` : Show connection info\n* `/clear` : Clear the screen\n* `/exit` : Quit BitChat\n\n\nNavigation Commands\n\n* `1-9` : Quick switch to conversation\n* `/list` : Show all conversations\n* `/switch` : Interactive conversation switcher\n* `/public` : Go to public chat\n\n\nMessaging Commands\n\n(Type normally to send in current mode)\n\n* `/dm <name>` : Start private conversation\n* `/dm <name> <msg>` : Send quick private message\n* `/reply` : Reply to last private message\n\n\nChannel Commands\n\n* `/j #channel` : Join or create a channel\n* `/j #channel <password>` : Join with password\n* `/leave` : Leave current channel\n* `/pass <pwd>` : Set channel password (owner only)\n* `/transfer @user` : Transfer ownership (owner only)\n\n\nDiscovery Commands\n\n* `/channels` : List all discovered channels\n* `/online` : Show who`s online\n* `/w` : Alias for `/online`\n\n\nPrivacy & Security Commands\n\n* `/block @user` : Block a user\n* `/block` : List blocked users\n* `/unblock @user` : Unblock a user\n```\n\n\n## Clone, Develop and Build\n> [!TIP] \n> [`uv` package and project manager](https://docs.astral.sh/uv/) usage recommended for this step\n\n### Clone and setup editable environment using `uv`\n```Shell\ngit clone https://github.com/o-murphy/pybitchat.git\ncd bitchat-python\nuv sync --dev\n.venv/bin/activate\n```\n\n### Type checking with\n```Shell\nuv run mypy \n```\n\n### Linting and Formatting\nLint\n```Shell\nuv run ruff check\n```\n\nFormat\n```Shell\nuv run ruff format\n```\n\n### Build sdist and wheel\n```Shell\nuv build\n```\n\n\n\n\n[//]: # (Old README.md content)\n[//]: # (pip install bleak>=0.22.3 cryptography>=44.0.0 lz4>=4.3.3 aioconsole>=0.8.1 pybloom-live>=4.0.0)\n",
"bugtrack_url": null,
"license": null,
"summary": "A Python implementation of the BitChat decentralized, peer-to-peer, encrypted chat application over BLE.",
"version": "0.1.0",
"project_urls": {
"Bug Reports": "https://github.com/o-murphy/pybitchat/issues",
"Homepage": "https://github.com/o-murphy/py-bitchat",
"Source": "https://github.com/o-murphy/pybitchat"
},
"split_keywords": [
"bitchat",
" ble",
" ble-mesh",
" irc-vibes",
" chat-application",
" p2p-chat"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "0b060d6c75116a783948450690156a88023d83b5f86b03ccc69815d65c36d6d2",
"md5": "f3c406ef22dd4c3811359cb86c31e840",
"sha256": "0b34353aade14bb907733349222bed837ff422f53c45d00cd19790256f152b4c"
},
"downloads": -1,
"filename": "pybitchat-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f3c406ef22dd4c3811359cb86c31e840",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 30915,
"upload_time": "2025-07-17T23:54:05",
"upload_time_iso_8601": "2025-07-17T23:54:05.525125Z",
"url": "https://files.pythonhosted.org/packages/0b/06/0d6c75116a783948450690156a88023d83b5f86b03ccc69815d65c36d6d2/pybitchat-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "68e3969596e623c259ecc411a7dd7a793724ebb43910879c7c5adfee53e1a9c0",
"md5": "9f2a654e5e0017272083b641110a7b6f",
"sha256": "67962474a4a1b90e3ca952a2a7dade7c695e341ffc41933ba75d4f1d60fb5016"
},
"downloads": -1,
"filename": "pybitchat-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "9f2a654e5e0017272083b641110a7b6f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 30080,
"upload_time": "2025-07-17T23:54:06",
"upload_time_iso_8601": "2025-07-17T23:54:06.382427Z",
"url": "https://files.pythonhosted.org/packages/68/e3/969596e623c259ecc411a7dd7a793724ebb43910879c7c5adfee53e1a9c0/pybitchat-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-17 23:54:06",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "o-murphy",
"github_project": "pybitchat",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "pybitchat"
}