Skip to content

D4vRAM369/ThreadsVault-desktop

Repository files navigation

ThreadsVault Desktop

threadsvault-desktop-icon

Platform Cross Platform Tauri Svelte TypeScript Tailwind CSS SQLite IndexedDB License PBL Claude Code Codex

Leer en español

A local vault for your Threads posts. No cloud. No tracking. No account needed.

ThreadsVault Desktop is the desktop version of ThreadsVault for Android. The idea is simple: paste a Threads post URL, it gets extracted and saved locally — and it's yours. Close the app and reopen it whenever you want: the text and images of your saved posts will still be there.

You can organize posts into categories, the app indexes post hashtags, and you can attach personal notes when saving — making your vault easy to search without depending solely on Threads' built-in Saved feature 🗄🧵


Screenshots

Empty vault
Empty vault
Main screen on first launch
Categories
Categories
Create and organize with color and icon
Settings
Privacy & settings
Backup, privacy, keyboard shortcuts
Bóveda con posts en modo claro
Vault with posts (new light mode since v2.1.0)
Home screen with light mode and saved posts
Categorías - Modo claro
Categories
Category view in light mode
Ajustes
Privacy and Settings
Light mode

Key features

  • Save posts by URL — paste a Threads link and hit save. Title, author, text and images are extracted automatically.
  • Local storage — SQLite on desktop (via Tauri), IndexedDB in browser. Nothing leaves your device.
  • Categories — organize your posts into custom categories. Uncategorized posts go to a default inbox.
  • Backup & restore — export your entire vault as JSON and import it whenever you want. On import, the app shows progress and confirms how many posts and categories were restored.
  • Media cache & built-in player — images are cached locally as data URLs; videos are downloaded and stored offline, playable directly inside the app with an option to download them.
  • Personal notes — add, edit or delete notes on any saved post directly from its detail screen.
  • Keyboard shortcuts — navigate and search without a mouse: Esc go back, Ctrl+N add, / or Ctrl+F search, navigate between posts.
  • ES/EN internationalization — the UI language is resolved automatically at startup from your OS locale. No configuration needed. Spanish and English fully supported across all screens.
  • No telemetry — no analytics, no error reporting, no external requests beyond post extraction. Everything runs 100% locally: not even the developer has access to your data.

Installation

Windows

Download the installer from Releases and run it:

Format Description
.exe Standard installer — recommended
.msi MSI package for managed/enterprise environments

Installs to %LocalAppData%\threadsvault-desktop and creates a Start Menu shortcut.

Linux

Multiple formats available in Releases:

Format How to use
.AppImage chmod +x ThreadsVault_*.AppImage && ./ThreadsVault_*.AppImage
.deb sudo dpkg -i threadsvault-desktop_*.deb
.rpm sudo rpm -i threadsvault-desktop_*.rpm
.flatpak flatpak install ThreadsVault-desktop-*.flatpak

Note: If the AppImage doesn't launch on Ubuntu 22.04+, run sudo apt install libfuse2.


How it works

  1. Copy the URL of a Threads post (e.g. https://www.threads.net/@user/post/abc123)
  2. Open the app → click the +Add button in the top right corner.
  3. Paste the URL and click Save, optionally adding notes.
  4. The app extracts the post content using a two-step system: Jina Reader is the primary method, with a direct fallback to Threads' embedded React state when Jina is unavailable or rate-limited.
  5. If the URL is part of a thread, the app automatically detects and extracts all posts in the sequence — no need to save them one by one (v2.2.0 update feature)
  6. The post (or thread) is saved locally. Done.

Privacy

  • All data is stored in a local SQLite database (%AppData%\threadsvault-desktop on Windows, ~/.local/share/threadsvault-desktop on Linux)
  • External requests are limited to r.jina.ai (primary source) and threads.net (alternative when Jina is unavailable).
  • No usage data, no error reporting, no telemetry of any kind

Known limitations

  • Threads only — designed specifically for Threads posts; other URLs may not extract correctly
  • Extraction reliability — occasionally a post may not extract perfectly on the first attempt. If text formatting or images look off, use the Refresh button to re-extract.
  • macOS not supported — requires an Apple Developer account ($99/year) for notarization; not planned for v2.x
  • Backup compatibility — importing backups from ThreadsVault for Android into ThreadsVault-desktop works seamlessly (Android → Desktop ✅). The reverse direction (Desktop → Android) is not yet supported and will be addressed in a future version.

Build from source

Prerequisites:

  • Node.js 20+
  • Rust (stable toolchain)
  • On Linux: libwebkit2gtk-4.1-dev, libgtk-3-dev, librsvg2-dev, libayatana-appindicator3-dev, patchelf (sudo apt install ...)
git clone https://github.com/D4vRAM369/threadsvault-desktop
cd threadsvault-desktop
npm install
npm run tauri build

The compiled binary will be in src-tauri/target/release/bundle/.

For development with hot-reload:

npm run tauri dev

Browser-only mode (no Tauri, uses IndexedDB instead of SQLite):

npm run dev

Tech stack

Layer Technology
Shell Tauri v2
Frontend Svelte 5 (runes) + TypeScript
Styles Tailwind CSS v4
Storage (desktop) SQLite via @tauri-apps/plugin-sql
Storage (browser) Dexie (IndexedDB)
Post extraction Jina Reader (r.jina.ai) + direct HTML fallback
i18n Custom i18n.ts (~130 keys, ES/EN)

Development approach

Built through PBL (Project-Based Learning) — documented with learning artifacts for personal use and study sessions.

Developed primarily with assistance from Claude Code and to a lesser extent ChatGPT-5.3-Codex.


License

GPL-3.0 — same as ThreadsVault for Android.