Open Rock – An open-source AI chat interface Open Rock is an open-source AI chat interface that connects to every Amazon Bedrock chat model in a user's region and to self-hosted models served through Ollama, vLLM, llama.cpp, TGI, LM Studio or other OpenAI-compatible servers, running as a website or a Tauri desktop app with the same interface. The app bills Bedrock per token via an API key, automatically picks cross-region inference profiles, and exposes per-model settings such as max output, temperature, Top P and Top K, stop sequences, and thinking budgets for Claude 3.7 through 4.5 and thinking/effort for Claude 4.6 to 5. Its Usage page reports Bedrock requests, input, output and cached tokens, latency, errors and estimated cost over the last 24 hours or 7, 30 or 90 days, priced from an editable table seeded with list prices. One chat app for every AWS Bedrock model and the models on your own servers. It runs as a website or as a desktop app Tauri , and both use the same interface. - Variable : Amazon Bedrock, billed per token. Sign in with a Bedrock API key and the model dropdown lists every chat model Bedrock offers in your region, including legacy ones such as Gemma 3 until AWS retires them, plus any provisioned throughput, custom model deployments, imported models and Bedrock Marketplace endpoints where most Gemma variants live you've set up. Cross-region inference profiles are picked automatically. You can also add your own model IDs or ARNs. - Dedicated : your own servers, always over HTTPS. Each runs one model of your choosing Gemma, Llama, Qwen, Mistral, DeepSeek, gpt-oss or anything else behind Ollama, vLLM, llama.cpp, TGI, LM Studio or another OpenAI-compatible server. Add as many as you like in Settings → Dedicated, each with a hostname or IP address, an HTTPS port 443 by default and its own token. In a chat, the menu at the top picks which server it goes to. Settings are per model. In Settings → Variable, pick a model to see only the settings it takes, within its limits: max output, temperature, Top P and Top K where the model has them, stop sequences, and the kind of thinking it does a thinking budget for Claude 3.7 to 4.5, thinking and effort for Claude 4.6 to 5, effort alone for models that always think, reasoning effort for gpt-oss . Models without their own settings use the ones for all models. In Settings → Dedicated, each server has its own context size, max output, history trimming, sampling temperature, top-p/k, min-p, penalties, seed, stop; left to the model unless you set them , thinking, system prompt handling, streaming, Ollama options and extra request JSON, next to what the server reports about its model. The sliders button next to the model menu opens the current model's settings. What a chat offers follows its model in both modes. Bedrock says which models read images, documents and video, and which ones think. A dedicated server says what it can about its model Ollama reports image input, thinking and context size; vLLM and llama.cpp report context size, and llama.cpp image input , and Open Rock fills the gaps from the model's name. So images are only offered to models that read them, thinking settings only appear for models that think on/off for Qwen3 and others Ollama says can think, effort for gpt-oss , and replies stay within the context the server reports. When nothing says whether a model reads images, they're offered; if the model refuses one, Open Rock sends the message without it and stops offering images for that model. You switch between the two with the Variable/Dedicated switch at the top of the sidebar. Both modes accept file uploads. What gets sent depends on the model: | | Bedrock models | Dedicated servers | |---|---|---| | Images PNG, JPEG, GIF, WebP; others are converted | Vision models only | Models that read images, when "Images" is on | | PDF, Word, Excel | Sent as files to models that accept them; otherwise sent as extracted text | Extracted text | | PowerPoint, code, text, CSV, JSON, Markdown… | Inlined as text | Inlined as text | | Video | Nova models | Not supported | Large photos are shrunk before upload. The paperclip picker only offers file types the selected model can use. The Usage page shows Bedrock usage per model: requests, input, output and cached tokens, latency, errors, and estimated cost. You can view the last 24 hours or the last 7, 30 or 90 days. Costs come from an editable price table in Settings; it starts with list prices for common models. shared/ types and helpers used by both sides server/ API server Node + Hono : Bedrock, dedicated servers, files, chats, usage web/ React interface Vite src-tauri/ desktop shell; runs the server as a bundled sidecar scripts/ build-sidecar.mjs compiles the server into one executable for the desktop app The browser never sees your Bedrock API key or your servers' tokens. Both stay in the server process. On the desktop, that server is a private sidecar on a random localhost port, protected by a random access token. Requires Node 20 or newer. npm install Everything is set up in Settings: - Settings → Variable : your Amazon Bedrock API key. - Settings → Dedicated : Add server for each of your servers, with its hostname or IP address, HTTPS port and token. Keys and tokens are stored by the Open Rock server and never shown again in the browser. If you prefer environment files, copy .env.example to .env . It can hold AWS BEARER TOKEN BEDROCK , used when the Settings field is empty, and one dedicated server OPEN ROCK DEDICATED HOST and OPEN ROCK DEDICATED TOKEN that starts the server list on first run. That token is only ever sent to that host. .env is git-ignored and only the server reads it. Development API on :8787, interface on :5173 with hot reload : npm run dev Open http://localhost:5173 http://localhost:5173 . Production: npm run build npm start serves the site and API on http://127.0.0.1:8787 To make the site reachable from other machines, set OPEN ROCK HOST=0.0.0.0 and OPEN ROCK AUTH TOKEN=