https://github.com/rjcuff/finn
The open source Chat-GPT
https://github.com/rjcuff/finn
ai chatbot chatgpt llm open-source
Last synced: 28 days ago
JSON representation
The open source Chat-GPT
- Host: GitHub
- URL: https://github.com/rjcuff/finn
- Owner: rjcuff
- Created: 2026-06-07T22:12:43.000Z (about 1 month ago)
- Default Branch: master
- Last Pushed: 2026-06-08T03:54:14.000Z (about 1 month ago)
- Last Synced: 2026-06-08T04:13:22.439Z (about 1 month ago)
- Topics: ai, chatbot, chatgpt, llm, open-source
- Language: TypeScript
- Homepage:
- Size: 9.67 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 👍 finn
**A private desktop chat app for local and cloud AI models.**
Chat with open models running locally through [Ollama](https://ollama.com), or connect your own OpenAI and Anthropic keys. Local chats never leave your machine — no account, no telemetry.



### Download
[-000000?logo=apple&logoColor=white&style=for-the-badge)](https://github.com/rjcuff/finn/releases/latest)
[-0078D6?logo=windows&logoColor=white&style=for-the-badge)](https://github.com/rjcuff/finn/releases/latest)
Grab the latest `.dmg` (macOS) or `.exe` (Windows) from the [Releases page](https://github.com/rjcuff/finn/releases), or build it yourself — see [Quick start](#quick-start).
---
## Overview
finn is a native desktop app for chatting with AI models. It runs open-weight models locally through Ollama, so your conversations stay on your own disk with no account and no internet required once a model is pulled. When you want a frontier model, add an OpenAI or Anthropic API key and pick it from the model switcher — the key is stored locally and used directly from your machine.
Built with Rust and Tauri, so it's a small native binary rather than a bundled browser.
## Features
- **Local models** — chat with any [Ollama](https://ollama.com) model. Installed models are detected automatically and your last choice is remembered.
- **Cloud models** — bring your own OpenAI or Anthropic key to use GPT and Claude models. Keys are stored locally.
- **Threads & projects** — chats are titled from your first message, grouped by date, and can be organized into projects. Everything is persisted locally.
- **Streaming markdown** — responses stream live with tables and syntax-highlighted code blocks with one-click copy.
- **File attachments** — attach text and code files to include their contents in a message.
- **Useful controls** — stop and regenerate, copy any message, set a custom system prompt, pull models in-app, and clear all data.
- **Keyboard shortcuts** — `Ctrl/⌘ N` new chat, `Ctrl/⌘ K` search.
## Quick start
**1. Install [Ollama](https://ollama.com/download) and pull a model:**
```bash
ollama pull llama3.2
```
**2. Run finn:**
```bash
npm install
npm run tauri dev
```
Your model shows up automatically. Open a new chat and start typing.
To use a cloud model instead, open **Settings → API keys** (or the **Models** screen), paste an OpenAI or Anthropic key, then select the model from the switcher in the top bar.
### Build a desktop binary
```bash
npm run tauri build
```
## Stack
| Layer | Tech |
|-------|------|
| Shell | [Tauri 2](https://tauri.app/) — Rust + native WebView |
| Frontend | React 19, TypeScript, Vite, [TanStack Router](https://tanstack.com/router) |
| Styling | Tailwind CSS 4, Radix UI, Framer Motion |
| Models | [Vercel AI SDK](https://sdk.vercel.ai/) — unified streaming over Ollama, OpenAI, and Anthropic |
| Storage | Tauri Store plugin (local JSON on disk) |
Monorepo via npm workspaces: `core` (shared types), `web-app` (frontend), `src-tauri` (Rust shell).
## Project structure
```
finn/
├── core/ # @finn/core — shared types & contracts
├── web-app/ # React + Vite + TypeScript frontend
│ └── src/
│ ├── components/ # chat, sidebar, layout, models, settings
│ ├── stores/ # Zustand state (threads, models, providers, settings)
│ ├── hooks/ # useChat — streaming engine
│ └── routes/ # chat, models, settings
└── src-tauri/ # Rust/Tauri shell + app icons
```
## Roadmap
- [ ] Packaged & signed installers
- [ ] Per-thread model selection
- [ ] Image and PDF attachments
## Contributing
finn is open source. Issues, ideas, and PRs are welcome → [github.com/rjcuff/finn](https://github.com/rjcuff/finn).