{"id":13580337,"url":"https://github.com/terhechte/twitvault","last_synced_at":"2026-03-11T01:31:59.922Z","repository":{"id":64395922,"uuid":"572094843","full_name":"terhechte/twitvault","owner":"terhechte","description":"Easily Archive and Search Your Twitter Data with our Syncable Desktop App","archived":false,"fork":false,"pushed_at":"2023-01-31T06:55:52.000Z","size":12548,"stargazers_count":157,"open_issues_count":3,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-06-01T01:14:53.378Z","etag":null,"topics":["desktop","dioxus","linux","macos","native","rust","terminal","twitter","twitter-api","windows"],"latest_commit_sha":null,"homepage":"https://terhechte.github.io/twitvault/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/terhechte.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}},"created_at":"2022-11-29T14:42:46.000Z","updated_at":"2025-04-24T07:41:36.000Z","dependencies_parsed_at":"2023-02-16T16:45:42.683Z","dependency_job_id":null,"html_url":"https://github.com/terhechte/twitvault","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/terhechte/twitvault","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/terhechte%2Ftwitvault","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/terhechte%2Ftwitvault/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/terhechte%2Ftwitvault/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/terhechte%2Ftwitvault/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/terhechte","download_url":"https://codeload.github.com/terhechte/twitvault/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/terhechte%2Ftwitvault/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30366051,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T21:41:54.280Z","status":"ssl_error","status_checked_at":"2026-03-10T21:40:59.357Z","response_time":106,"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":["desktop","dioxus","linux","macos","native","rust","terminal","twitter","twitter-api","windows"],"created_at":"2024-08-01T15:01:49.976Z","updated_at":"2026-03-11T01:31:59.904Z","avatar_url":"https://github.com/terhechte.png","language":"Rust","readme":"# TwitVault\n\n![TwitVault Logo](media/logo.svg)\n\n## Easily Archive and Search Your Twitter Data with our Syncable Desktop App\n\n\u003cimg src=\"website/media/macos.jpg\" width=\"450\" /\u003e\n\nTwitVault is a cross platform desktop app that uses the Twitter api to download\nyour profile data. It can also sync your profile to retrieve new data (with some limitations) and\nit can import some data from the official Twitter archives. You can then browse and search\nyour offline Twitter data from the convenience of a native (well, partially native) deskop app.\n\n### Features\n\n- Import Tweets from an existing Twitter archive (see below)\n- For any Tweet, also optionally archive the author and the authors profile media\n- Archive your tweets.\n- Optionally including respones to your tweets\n- Archive your mentions.\n- Follows and Followers\n  - Optionally including user profiles\n  - Optionally including profile images\n- Your lists (the ones you created) including user profiles / media\n- Archive your Liked Tweets\n- Search within your downloaded data [see screenshot](media/search.jpg)\n- See your Tweets reverse chronological beginning with your first Tweets.\n- Sync, to download newer Tweets, mentions or responses\n- Delete Tweets on Twitter\n- Archive a different users profile / tweets\n- Runs on macOS, Linux and Windows. Can also run in the terminal.\n\n### Limitations\n\nThere ~might~ will be bugs for various usecases that I haven't run into during my testing.\n\nDue to API limitations, not all data can be archived. For every category, Twitter only returns a certain amount of data:\n\n- No Bookmarks yet. Working on it.\n- Your Tweets: max 3.200\n- Your Mentions: max 800\n- Follows / Followers: No idea, but at least 5000, probably more\n- Lists: Max 1000, max 5000 members per list\n\n### Download / Installation\n\nYou will need at least Rust 1.65.0 because I've been waiting for [`let else` for a long time](https://rust-lang.github.io/rfcs/3137-let-else.html) (it was the first thing I missed when I started doing Rust in 2018), I want to use it anywhere.\n\nYou can find a download in the release section. Or you can compile it yourself as follows (API Keys are explained below)\n\n``` sh\nexport API_KEY MYAPIKEYasfkaljsf\nexport API_SECRET MYAPISECRETaslkfdj\ncargo build --release\n```\n\nNote that if you're on Linux, some dependencies need to be met. Check out the [deploy.yml](.github/workflows/deploy.yml)\n\n\u003e You will also need a valid Twitter API Key. Which has to be set in your shell environment.\n\n[To get a Twitter API Key, follow their getting started guide](https://developer.twitter.com/en/docs/twitter-api/getting-started/about-twitter-api)\n\n### Crawl the data for a different user\n\nYou still need to authenticate with your own user account, but you can crawl a different user. This can currently only be\ndone on the commandline. It also requires the user id of the user you'd like to crawl. Until TwitVault can resolve this, you\ncan get the user id for any user [via this website](https://tweeterid.com\").\n\nNote that on macOS, to run it via the Terminal (if you have it installed in `/Applications/`) you would do `/Applications/TwitVault.app/Contents/MacOS/TwitVault` instead of just `twitvault`.\n\nA custom user should go into a different archive folder. In this example, we will archive the user `@hyperdeck_io` into `~/Documents/hyperdeck_io`:\n\n``` sh\ntwitvault --custom-archive ~/Documents/hyperdeck_io crawl --custom-user 1263729774540849158\n```\n\nThen, follow the instructions in the Terminal.\n\nThis will archive the user `hyperdeck` into the `~/Documents/hyperdeck_io` folder.\n\nIf you then want to open that archive, you'd do the following:\n\n``` sh\ntwitvault --custom-archive ~/Documents/hyperdeck_io\n```\n\n### Crawl multiple of your accounts\n\nIf you have multiple Twitter accounts, you can crawl them via a similar mechanism as above:\n\n``` sh\ntwitvault --custom-archive ~/Documents/hyperdeck_io\n```\n\nThis will open the UI and allow you to log in as a different user and then crawl the data. If you, later on, want to\nopen this or another archive, just use the same command.\n\n### Twitter Archive Sync\n\nIf you already downloaded an existing Twitter Archive, you can use it to fill up any missing Tweets in your TwitVault import.\n\nFirst, perform a normal TwitVault backup.\n\nOnce the backup is done, exit TwitVault, head to the Terminal, and execute the following command:\n\n``` sh\ntwitvault import -c ~/twitter-archive-folder\n\n# or on macOS\ncd /Applications/TwitVault.app/Contents/MacOS/\n./TwitVault import -c ~/Path/To/twitter-archive-folder\n/Applications/TwitVault.app/Contents/MacOS/TwitVault import -c ~/Path/To/twitter-archive-folder\n```\n\nAfterwards, you can start TwitVault again and it will contain the Tweets.\n\n### Deleting Tweets\n\nTwitVault allows you to delete Tweets if they're your own. Due to the simplicity of the app, you'll not get any feedback whether\nthe operation worked or not. Only when you start the app via the Terminal will you see a warning if it didn't work.\n\n### More Screenshots\n\nSearch:\n\n![Search Screenshot](website/media/search.jpg)\n\nLinux (slightly outdated):\n\n![Linux Screenshot](website/media/linux.jpg)\n\nWindows (slightly outdated):\n\n![Windows Screenshot](website/media/windows.jpg)\n\nTerminal:\n\n![Terminal Screenshot](website/media/terminal.jpg)\n\n### Where is my data stored?\n\nThe location of your data depends on your operating system:\n\n- Linux: `/home/username/.config/twitvault`\n- Windows: `C:\\Users\\Username\\AppData\\Roaming\\StyleMac\\TwitVault\\config`\n- macOS: `/Users/username/Application Support/com.StyleMac.TwitVault` or `/Users/username/Library/Application Support/com.StyleMac.TwitVault`\n\nTesting these kinds of things under three different operating systems is kinda hard. So there might be bugs.\n","funding_links":[],"categories":["Rust"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fterhechte%2Ftwitvault","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fterhechte%2Ftwitvault","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fterhechte%2Ftwitvault/lists"}