An open API service indexing awesome lists of open source software.

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

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.

![Tauri](https://img.shields.io/badge/Tauri-2-24C8DB?logo=tauri&logoColor=white)
![React](https://img.shields.io/badge/React-19-61DAFB?logo=react&logoColor=white)
![TypeScript](https://img.shields.io/badge/TypeScript-5-3178C6?logo=typescript&logoColor=white)

### Download

[![Download for macOS](https://img.shields.io/badge/Download-macOS%20(.dmg)-000000?logo=apple&logoColor=white&style=for-the-badge)](https://github.com/rjcuff/finn/releases/latest)
 
[![Download for Windows](https://img.shields.io/badge/Download-Windows%20(.exe)-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).