OpenSource-Hub

thunderbolt

Application

thunderbird/thunderbolt

Open-source AI client for cross-platform use with privacy and local model control.

Overview

Thunderbolt is an open-source, cross-platform AI client that lets users choose their models, own their data, and eliminate vendor lock-in. Supports desktop and mobile platforms, and can be self-hosted on-premises.

README Preview

# Thunderbolt [](https://github.com/thunderbird/thunderbolt/actions/workflows/ci.yml)\n\n**AI You Control: Choose your models. Own your data. Eliminate vendor lock-in.**\n\n\n\n> [!IMPORTANT]\n> ⚠️ **We are excited about the amount of interest Thunderbolt has been getting and want to clarify that it is still early and under active development**. Currently, we are targeting enterprise customers that want to deploy it on-prem. We encourage you to self-host it and try it out, but there are a few caveats we are still working on:\n>\n> - While we eventually plan to make Thunderbolt fully offline-first, it currently depends on authentication and search functionality (though you can disable search on the integrations screen in the app). You can [deploy your own backend with Docker](./deploy/README.md) and sign up in order to test it locally.\n> - You’ll need to add your own model providers - we don’t yet have a public inference endpoint. We recommend using Thunderbolt with [Ollama](https://ollama.com) or [llama.cpp](https://github.com/ggml-org/llama.cpp) if you want free local inference, or you can add API keys for any OpenAI-compatible model provider in the settings.\n\nThunderbolt is an open-source, cross-platform AI client that can be deployed on-prem anywhere.\n\n- 🌐 Available on all major desktop and mobile platforms: web, iOS, Android, Mac, Linux, and Windows.\n- 🧠 Compatible with frontier, local, and on-prem models.\n- 🙋 Enterprise features, support, and FDEs available.\n\n**Thunderbolt is under active development, currently undergoing a security audit, and preparing for enterprise production readiness.**\n\n## Get Started Locally\n\n```sh\nmake doctor    # verify your tools — prints exact install commands for anything missing\nmake setup     # install frontend + backend dependencies, wire up agent symlinks\nmake up        # start Postgres + PowerSync in Docker\nmake run       # start the backend (:8000) and frontend (:1420)\n```\n\nFor self-hosting with Docker C

FAQ (5)

informational
Does Thunderbolt collect telemetry by default on self-hosted instances?

No, for self-hosted/OIDC deployments, telemetry is disabled by default. Consumer/cloud deployments still have telemetry enabled by default. This change is implemented in PR #714.

GitHub Issue #701
Troubleshooting
How to fix 'javascriptcoregtk-4.1 not found' error when building Tauri app on Ubuntu?

Install Tauri's Linux system dependencies:

sudo apt install libwebkit2gtk-4.1-dev libjavascriptcoregtk-4.1-dev \\
  build-essential curl wget file libxdo-dev libssl-dev \\
  libayatana-appindicator3-dev librsvg2-dev libsoup-3.0-dev

For other distros, see [Tauri's prerequisites](https://v2.tauri.app/start/prerequisites/#linux). Also ensure sccache is installed (cargo install sccache).

GitHub Issue #692
Troubleshooting
Why do I get 401 errors after OIDC login in my self-hosted Docker deployment, despite successful callback?

This was a known issue with OIDC auth mode failing to persist the Bearer token after callback. Fixed in PR #782 by switching to session cookie authentication. Upgrade your deployment and change environment variable VITE_AUTH_MODE from 'oidc' to 'sso'. Also update your Identity Provider (e.g., Keycloak) to reflect the new callback URL. All authenticated requests will then work immediately after login.

GitHub Issue #754
Troubleshooting
How to fix 'these Docker images are configured to store database data in a format which is compatible with pg_ctlcluster' error for Postgres container?

Update your docker-compose.yml: change the volume mount from /var/lib/postgresql/data to /var/lib/postgresql. For example, replace '- postgres_data:/var/lib/postgresql/data' with '- postgres_data:/var/lib/postgresql'. Alternatively, pin the Postgres image to postgres:17-alpine to keep the old data layout.

GitHub Issue #763
Troubleshooting
Why does the backend pod fail to start in Kubernetes after deploying Thunderbolt v0.1.91?

The backend deployment in v0.1.91 is missing the BETTER_AUTH_SECRET environment variable, causing the pod to crash on startup. This issue has been fixed in PR #548 and will be included in a future release. As a workaround, manually add the BETTER_AUTH_SECRET variable to your backend deployment YAML.

GitHub Issue #771