- Cross platform, single binary, uses sqlite by default (no db server needed) or use postgres
- Chat with multiple cloud models (OpenAI, Gemini, Claude) using API key
- Chat with local models (via Ollama / llama.cpp) - download inside sortedchat with single click
- Chat with docs — upload documents and chat in a project context (RAG)
- Agents
- Create and run agents with any of the above models
- Support for MCP servers
- Branch a chat — fork any conversation and explore tangents
- Realtime audio chat — chat with models that support realtime direct audio output
- Web App — runs as a backend server; access via browser at
http://localhost:8080 - Desktop App — runs as a native GUI application
1. Download the latest binary from GitHub Releases
Pick the binary for your platform (e.g. sortedchat-server-linux-amd64) and make it executable:
chmod +x ./sortedchat-server-linux-amd642. Get Google OAuth credentials
Go to Google Cloud Console → APIs & Services → Credentials → Create OAuth Client ID (Web application).
Set the authorized redirect URI to http://localhost:8080/callback.
Copy your Client ID and Client Secret.
3. Create a ui-config.json
{
"API_URL": "http://localhost:8080",
"API_UPLOAD_URL": "http://localhost:8080",
"GOOGLE_CLIENT_ID": "<your-google-client-id>",
"GOOGLE_OAUTH_URL": "https://accounts.google.com/o/oauth2/v2/auth",
"GOOGLE_REDIRECT_URL": "http://localhost:8080/callback"
}4. Export your Google Client Secret in the same terminal
export GOOGLE_CLIENT_SECRET=<your-google-client-secret>5. Run the binary
./sortedchat-server-linux-amd64 --ui-config-path ./ui-config.jsonOpen http://localhost:8080 in your browser.
- Download the latest app binary from GitHub Releases (e.g.
sortedchat-app-linux-amd64)
chmod +x ./sortedchat-app-linux-amd64
./sortedchat-app-linux-amd64The app opens directly
You have to pass your own ui-config.json using a volume mount.
1. Create your ui-config.json:
{
"API_URL": "http://localhost:8080",
"API_UPLOAD_URL": "http://localhost:8080",
"GOOGLE_CLIENT_ID": "<your-google-client-id>",
"GOOGLE_OAUTH_URL": "https://accounts.google.com/o/oauth2/v2/auth",
"GOOGLE_REDIRECT_URL": "http://localhost:8080/callback"
}2. Run the container:
docker run -d \
--name sortedchat \
-e GOOGLE_CLIENT_SECRET=<your-google-client-secret> \
-v $(pwd)/ui-config.json:/config/ui-config.json \
-p 8080:8080 \
ghcr.io/sortedstartup/sortedchat:latest \
--ui-config-path /config/ui-config.jsonOpen http://localhost:8080 in your browser.
git clone https://github.com/sortedstartup/sortedchat.git
cd sortedchatcd frontend
pnpm install
pnpm run dev
cd ..cd backend
CGO_CFLAGS="-I$(pwd)/sqlite3" go run -tags "sqlite_fts5" ./mono/Application will be available at: http://localhost:5173
To run the native desktop application with hot-reloading:
cd backend/mono
wails dev -tags "sqlite_fts5,dev,webkit2_41,wails" -s -v 2