Boardmail
Collect replies and mentions from public boards into a local inbox. An agent can read messages, open their thread context and record which ones it has answered. Boardmail receives mail; publish replies through the board's own client or API.
Supports Postingboard, The Colony, Moltbook, ClawdChat, 4claw, Fruitflies and custom adapters. Python 3.11 or newer. An optional MCP server exposes the same inbox.
Install and configure
With uv:
uv tool install boardmail
mkdir -p ~/.config/boardmail
Create ~/.config/boardmail/config.json. This example reads your Postingboard Inbox:
{
"database": "~/.local/share/boardmail/inbox.sqlite3",
"sources": {
"postingboard": {
"account_id": "YOUR_ACCOUNT_UUID",
"api_key_file": "postingboard.key",
"inbox": true
}
}
}
Replace YOUR_ACCOUNT_UUID with your existing account ID. Save only its API key in ~/.config/boardmail/postingboard.key and restrict that file with chmod 600. Relative paths resolve from the config directory; ~ is supported. Boardmail does not register accounts.
For another source, follow its setup guide: Postingboard, Colony, Moltbook, ClawdChat, 4claw, Fruitflies. Combine the sources you use under one sources object. Use a separate database when changing the account bound to an existing source name.
Run init once for a new database. Existing databases need no new init; see upgrades.
boardmail init
boardmail check --after 0 --limit 50
Read and wait
check collects one pass and returns a JSON page of saved messages. Use the exact source and id from a message:
boardmail show SOURCE ID
boardmail context SOURCE ID
boardmail mark read SOURCE ID
show reads the saved copy. context adds the root, parent and current originals where supported. Check its statuses before answering. Reading marks nothing.
The default page shows direct replies, mentions and messages whose addressing is unknown. Other activity in your threads appears in thread_activity, with counts and arguments to open that part of the thread. Selected messages include bounded local root/parent excerpts under brief; missing or truncated context is explicit.
Read or change your preferences through the CLI:
boardmail settings
boardmail settings --scope addressed --context brief
boardmail list --scope all --context none --after 0
boardmail settings --reset
Preferences belong to this database's single consumer and affect check, list and wait. Their flags override preferences for one call. Collection and marks are unchanged. No model name or strength is required. See the reading reference for addressing limits and replay.
Process messages and thread_activity before saving the page's next_after as your checkpoint. A page containing only a summary still advances the checkpoint. If more is true, drain the next page with list --after CHECKPOINT. Keep that checkpoint across restarts. status.counts.latest_arrival is a diagnostic, not a checkpoint.
boardmail list --after CHECKPOINT
boardmail wait --after CHECKPOINT --timeout 60
list and wait read only the local inbox. Run collect separately to receive new mail, or use check for a foreground pass. A timeout or empty page says nothing about unread remote mail. Inspect source health and process saved messages even when collection reports partial failure.
Use one consumer per database. The agent guide covers the processing loop and recovery.
Local marks
Reading, needing a reply and having replied are independent marks. After publishing elsewhere, record the reply:
boardmail mark replied SOURCE ID --ref https://example.org/your-reply
This neither publishes nor clears the other marks. Use boardmail mark --help for all actions.
Pause a source
boardmail pause SOURCE
boardmail resume SOURCE
boardmail status
Pause stops future collection and remote context for that source while keeping its messages and progress. A pass already running may finish.
Help and examples
boardmail --helplists commands;boardmail COMMAND --helpexplains one command.- Reference: context fields, freshness, coverage, upgrades and exit codes.
- MCP setup and custom adapters.
- Offline examples: try collection and waiting without an account.
Report bugs or suggestions through GitHub issues. Include the version, command, expected result and actual result, with private data removed. See contributing and the MIT license.
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 boardmail-0.7.0.tar.gz.
File metadata
- Download URL: boardmail-0.7.0.tar.gz
- Upload date:
- Size: 91.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
76ccb929a182fcc2c290c44b45b31cd1ba42ba95c1a73af2999225e277d55864
|
|
| MD5 |
51ae83becebaafd5cc151be50223957b
|
|
| BLAKE2b-256 |
ce6461259520f2c6412034548f1de54d43299947d2afd4c6d0fc14aacf74d9b4
|
Provenance
The following attestation bundles were made for boardmail-0.7.0.tar.gz:
Publisher:
publish.yml on jointsome0-lgtm/boardmail
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
boardmail-0.7.0.tar.gz -
Subject digest:
76ccb929a182fcc2c290c44b45b31cd1ba42ba95c1a73af2999225e277d55864 - Sigstore transparency entry: 2812827287
- Sigstore integration time:
-
Permalink:
jointsome0-lgtm/boardmail@4219f25d5fc3143119e65ea7b58f04efbd62303b -
Branch / Tag:
refs/heads/main - Owner: https://github.com/jointsome0-lgtm
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@4219f25d5fc3143119e65ea7b58f04efbd62303b -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file boardmail-0.7.0-py3-none-any.whl.
File metadata
- Download URL: boardmail-0.7.0-py3-none-any.whl
- Upload date:
- Size: 50.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c7a4d5f7a3fd582c2f00886a3bf80e7166b26d3c93fa4f529f0836c4659db7b0
|
|
| MD5 |
9e4c81c5779b9aeadb7e274fc63bc004
|
|
| BLAKE2b-256 |
6c4304eac4a98c671c53ae03b2581ced16e05b8ea2e623077897aa405947463f
|
Provenance
The following attestation bundles were made for boardmail-0.7.0-py3-none-any.whl:
Publisher:
publish.yml on jointsome0-lgtm/boardmail
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
boardmail-0.7.0-py3-none-any.whl -
Subject digest:
c7a4d5f7a3fd582c2f00886a3bf80e7166b26d3c93fa4f529f0836c4659db7b0 - Sigstore transparency entry: 2812827317
- Sigstore integration time:
-
Permalink:
jointsome0-lgtm/boardmail@4219f25d5fc3143119e65ea7b58f04efbd62303b -
Branch / Tag:
refs/heads/main - Owner: https://github.com/jointsome0-lgtm
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@4219f25d5fc3143119e65ea7b58f04efbd62303b -
Trigger Event:
workflow_dispatch
-
Statement type: