{"id":35129067,"url":"https://github.com/johnburnett/beepex","last_synced_at":"2026-01-17T00:08:26.117Z","repository":{"id":317448845,"uuid":"1064940806","full_name":"johnburnett/beepex","owner":"johnburnett","description":"Export Beeper chat history","archived":false,"fork":false,"pushed_at":"2026-01-13T00:02:39.000Z","size":208,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-13T03:18:28.448Z","etag":null,"topics":["beeper"],"latest_commit_sha":null,"homepage":"","language":"CSS","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/johnburnett.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-26T19:48:12.000Z","updated_at":"2026-01-13T00:02:42.000Z","dependencies_parsed_at":"2025-10-01T00:24:30.091Z","dependency_job_id":"af22d5ee-8a6a-49b8-b525-b719a758df09","html_url":"https://github.com/johnburnett/beepex","commit_stats":null,"previous_names":["johnburnett/beepex"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/johnburnett/beepex","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnburnett%2Fbeepex","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnburnett%2Fbeepex/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnburnett%2Fbeepex/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnburnett%2Fbeepex/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/johnburnett","download_url":"https://codeload.github.com/johnburnett/beepex/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnburnett%2Fbeepex/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28489845,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T23:55:29.509Z","status":"ssl_error","status_checked_at":"2026-01-16T23:55:29.108Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["beeper"],"created_at":"2025-12-28T04:28:53.832Z","updated_at":"2026-01-17T00:08:26.105Z","avatar_url":"https://github.com/johnburnett.png","language":"CSS","funding_links":[],"categories":["🛠️ Tools"],"sub_categories":["Community Bridges"],"readme":"# beepex\n\nExport [Beeper](https://www.beeper.com/) chat history to static HTML, handy for archival purposes.\n\nExample output can be seen [here](https://html-preview.github.io/?url=https://github.com/johnburnett/beepex/blob/main/example/index.html).\n\n# Initial setup\n\nbeepex requires running the Beeper desktop client and depends upon the Beeper Desktop API being enabled.\n\n1. [Enable the Beeper Desktop API](https://developers.beeper.com/desktop-api)\n1. [Create an access token](https://developers.beeper.com/desktop-api/auth) and make note of it for future steps below.\n    - It is convenient to name the token \"beepex\" and set it to non-expiring.\n    - It is unnecessary to \"Allow sensitive actions\" (beepex is read-only and will not modify chats).\n\n# Installing beepex\n\n## Pre-built\n\nGrab the latest [pre-built release](https://github.com/johnburnett/beepex/releases)\n\n## Building manually\n\n1. [Install uv](https://docs.astral.sh/uv/getting-started/installation/)\n1. Clone this repo (`git clone https://github.com/johnburnett/beepex`)\n1. In the clone, either run `build.sh` to build a self-contained binary, or run `uv run beepex.py` to run without building\n\n# Running beepex\n\nbeepex needs to know the value of the access token created during initial setup above.  It can be provided in a few ways, depending on your preferences:\n\n1. Set an environment variable named `BEEPER_ACCESS_TOKEN` with the value of the access token above.\n1. Saved in a file called `.env` file next to the beepex executable, containing `BEEPER_ACCESS_TOKEN=YOUR_TOKEN`.\n1. Passed on the command line with the `--token YOUR_TOKEN` argument.\n\nTo export all chats to the directory `C:\\temp\\beepex_export`, run:\n\n```\nbeepex.exe C:\\temp\\beepex_export\n```\n\n## Full usage\n```\nusage: beepex [-h] [-v] [--token TOKEN] [--env ENV]\n              [--include_account_ids AccountID [AccountID ...]]\n              [--exclude_account_ids AccountID [AccountID ...]]\n              [--include_chat_ids ChatID [ChatID ...]] [--exclude_chat_ids ChatID [ChatID ...]]\n              [--chat_names_remap_file CHAT_NAMES_REMAP_FILE]\n              output_root_dir\n\npositional arguments:\n  output_root_dir\n\noptions:\n  -h, --help            show this help message and exit\n  -v, --version         show program's version number and exit\n  --token TOKEN         Beeper Desktop API access token. If not provided, uses the\n                        BEEPER_ACCESS_TOKEN environment variable, potentially read from a .env file\n                        if it is next to the beepex executable.\n  --env ENV             Path to an env file that contains a definition of the BEEPER_ACCESS_TOKEN\n                        environment variable.\n  --include_account_ids AccountID [AccountID ...]\n  --exclude_account_ids AccountID [AccountID ...]\n  --include_chat_ids ChatID [ChatID ...]\n  --exclude_chat_ids ChatID [ChatID ...]\n  --chat_names_remap_file CHAT_NAMES_REMAP_FILE\n                        Path to a CSV file that contains mappings from a chatID to name, one per\n                        line. Useful for when someone has deleted their account on a platform and no\n                        longer has a name exposed.\n\nThe include/exclude arguments are processed in the order given, and may be used multiple times. The\nstarting set of chats to include depends upon the first include/exclude argument that is used:\n- If the first is an \"include_\" type, the include/excludes are \"building up\" the set of chat IDs\n  from nothing.\n- If the first is an \"exclude_\" type, the include/excludes are \"pruning down\" the set of chat IDs\n  from all possible chats.\n- In either case, subsequent includes can re-add chats that were previously excluded, and vice-\n  versa.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnburnett%2Fbeepex","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjohnburnett%2Fbeepex","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnburnett%2Fbeepex/lists"}