What should we build?

Pick a model, connect a key, and search the live web with cited sources.

⌘Kcommands ⌘Mmodels ⌘,settings
↵ send
Keys and history stay in this browser; hosted calls go direct or through a proxy you configure.

Connect a provider

Eltes has no demo mode — keys make it live.
Stored locally · sent to the provider directly or through your configured backend Provider accounts

Switch model

The conversation follows you — only the model changes.
esc
No API keys connected Connect account
esc
↑ ↓ navigate ↵ select 0 results

Settings

Saved locally · Eltes CAI-1

Theme

The chat shell ships in Obsidian — true black, with no blue in the surfaces, bubbles or accents. Graphite is the softer grey.

Interface themeApplies to the whole chat workspace: shell, composer, bubbles and accents.

Conversation

How Eltes behaves while you work.

Default modelUsed for new chats and after a reload.
Stream responsesRender tokens as they arrive instead of waiting for the full answer.
Send withChoose which key submits a message.
Agent modeLet Eltes plan and call the six on-device tools by default. Hosted models get the same registry through native tool calling.
Show search thinkingDisplay the live steps — query, sources read and timing — above answers. Nothing is pre-scripted; failed searches show a failed step.

Appearance

Dark by design. These adjust density, motion and metrics.

DensityComfortable adds breathing room between messages.
Reduce motionDisable message and interface animations.
Show timestampsDisplay the send time next to each reply.
Show metricsTokens, latency and tokens per second under each reply.

CTab · Customize chat design

Your workspace, your style. Start with a familiar layout, then make it yours. Dark surfaces stay dark. These are Eltes adaptations, not official interfaces or provider integrations. Changing a design never changes your model, API keys, or chats.

Make it yours

Live design preview

Sample content only. Your real chat updates immediately behind Settings.

EltesDesign preview
Build a small website and show me the code.
Plan

Create the files, review the source, then preview the result.

index.html · styles.css · app.js
Ask a follow-up…

Optional Vercel/local backend

Use a backend you control for provider key checks and hosted-model requests. A key is sent over HTTPS with each request and is not stored by the Eltes function code. The backend operator and platform still process it; use only a backend you trust. Leave blank for direct browser-to-provider requests.

Proxy off — hosted requests go directly from this browser to the provider.
GitHub Pages is static and does not run this backend. See backend deployment docs.

Bring your own key

Keys are saved in this browser's local storage. By default, they go directly from the browser to your selected provider. If you set a backend above, requests and the key test go through that backend. Eltes does not decide free-tier eligibility or provider billing.

Web search

Optional live web search with numbered source links. Eltes calls a search API through your configured backend, using your own search key; the key is sent with that request only and is never stored by the backend. Search providers charge under their own terms.

Custom endpoint

Connect an already-running Ollama, LM Studio, vLLM, LiteLLM, or other OpenAI-compatible server at /chat/completions. This connects to an inference endpoint; it does not train a model. Configure its CORS allowlist for this page's origin.

Requests are sent from your browser; localhost endpoints must allow CORS.

Model Context Protocol

MCP lets Eltes call tools that live in other programs on this machine — Blender, Roblox Studio, or any server you run. Eltes speaks HTTP only; command-based servers go through a small bridge you start once and leave open.

Your servers

Saved in this browser only. Nothing connects until you press Connect.

A connected server can run code on this machine. Connect only servers you trust, and keep the bridge on 127.0.0.1. Read the MCP docs.

Model visibility

Star the models you reach for. Starred models stay at the top of the picker and in the command palette.

Defaults

Model for new chatsThe picker still lets you switch at any time.

Your account

Accounts are optional and stored in this browser. Connect an OpenAI, Anthropic or DeepSeek account, or use a local profile — nothing is uploaded.

Session

PlanHosted plans are not announced. BYOK stays free.
BYOK
PricingSee what is planned before you commit.

Your data, on your device

Everything Eltes knows lives in this browser: chats, settings, keys and your profile. Export it as JSON whenever you like, or clear it completely.

Chat history0 conversations
Storage used0 KB of local storage
Export everythingChats, settings and preferences as JSON. Keys are never included.
Import a backupRestore chats and settings from an Eltes JSON export.
Delete all chatsRemoves every conversation from this browser. Keys are kept.
Eltes AI agent

A local-first AI agent workspace. Real provider keys, real streaming, real tool calls — with history that stays on your device.

Version3.20.0
StoragelocalStorage
Models65 · 14 providers
On-deviceEltes CAI
Requests to Eltes0
Read the docsSetup, keys, models, tools and self-hosting.

Shortcuts

Command paletteChats, models and actions in one list.
⌘K
Switch modelOpen the model picker from anywhere.
⌘M
Toggle sidebarMore room for long answers.
⌘B
New chatStart with the current model.
⌘N
SettingsOpen this dialog.
⌘,

Set up your workspace

Choose how to start, then explicitly connect the files and tools you want.
01
Choose how to chatCAI runs on this device without an API key. Hosted models use your provider key and may incur provider charges.
02
Install Eltes as an appUse the green-cloud icon in a standalone window. On Chromebook, choose Chrome’s Install page as app option; on supported browsers, use the button below.
Open your browser menu and choose Install Eltes or Install page as app.
03
Connect files and local commandsInstalling Eltes does not grant blanket access to your computer. Choose a folder to add files to drafts, or set up the opt-in local runner for approved commands. It cannot attach to an existing ChromeOS Terminal session.
04
Your workspace, your choiceChats, settings, and keys stay in this browser. Only files you add to the draft are shared when you send. Hosted prompts go to that provider. Local commands run under the local server account after your approval.

Review generated file

The agent prepared a file. Review it before adding a download to this chat.

      

This does not run code or shell commands, and it does not write into a project folder. Approving stores the file in this local conversation so you can download it.

Review tool call

The model is asking an MCP server to perform this action.
SERVER
TOOL


      

Approve only if you trust this server and these arguments. Denying sends a decline result to the model.

Export this conversation

Nothing leaves your browser.
Download a clean Markdown transcript, copy it to the clipboard, or export raw JSON for a backup.

Guide this conversation

Set preferences for the selected hosted model.
Saved locally with this conversation. These instructions are not applied to the on-device Eltes CAI helper.0 / 2000

Selected local folder

Eltes can only see the folder you choose here.
Choose one folder to browse safe top-level source files. Reading only adds contents to your draft; nothing is sent until you press Send. The agent may propose changes only to listed files, and every complete write is shown for your approval. Access stays in memory for this tab.
No folder selected.
Select a folder to see supported text and code files.

Only top-level files are listed; subfolders are not scanned. Secret, .env, key, and production/deployment files are excluded. Reads add content to a reviewable draft; writes are limited to existing listed files up to 100 KB and require separate approval.

Review file change

No change is made until you approve this exact replacement.

Current file

Proposed replacement

Review the entire file. Eltes never writes secrets, .env files, private keys, or production/deployment configuration. This approval applies only to this listed file.

Local terminal runner

Run approved commands through your local Eltes server, not an existing terminal session.
Commands can read, change, or delete files with the server user’s permissions. Common direct references to secrets, .env files, deployment targets, and destructive operations are blocked, but these filters are not complete. Every command is shown for approval first. Output is returned to the selected model. This is not a sandbox; use only on a computer you control.

Start the Eltes Node server locally with shell support enabled. Bash/macOS/Linux: ELTES_ENABLE_SHELL=1 HOST=127.0.0.1 npm start. PowerShell: $env:ELTES_ENABLE_SHELL=1; $env:HOST='127.0.0.1'; npm start. On Chromebook, start it from the Linux development terminal and use the local Eltes page, not the hosted PWA. Copy the one-time token printed by the server. It runs new commands as the server user; it does not attach to or read an existing terminal session. Python commands such as python3 --version work only if Python is installed in that same environment; each command starts a new process, not an interactive Python session. After connecting, turn on Tools and use a hosted model. This runner is unavailable on GitHub Pages or Vercel.

Disconnected. Tool calls are not sent to a shell.

Approve terminal command

The exact command below will run on your local Eltes server.
WORKING DIRECTORY

      
      

Only approve commands you understand. They run with your account’s permissions and can modify files. This is not a sandbox. For model-requested runs, output is returned to your selected provider.

Code workspace

Watch your selected model (including Claude) write source, then approve files before saving. Preview websites in the browser, or approve Python / JavaScript / TypeScript scripts on a paired local runner. Local execution is not an OS sandbox. Files live only in this tab; download them before leaving. Jac is source-only.

Live source · waiting for coding tools

Source appears here as tool arguments arrive. Drafts never run automatically.

Activity & terminal output

Ready. No commands running.

No file selected

Tab indents · Ctrl/Cmd+S saves

Tab indents. Escape, then Tab moves to the next control. Shift+Tab moves back. Ctrl/Cmd+S saves in this tab.

Local scripts: .py, .js, .ts. Only the saved file is copied to a temporary directory. Python needs an installed interpreter; TypeScript needs Node.js 22.18+ and erasable type syntax. No automatic package installs.

Isolated preview

No files yet. No automatic execution or disk access.

JavaScript sandbox

Review the code, then run it in an isolated, time-limited worker.
JavaScript only. Runs in a disposable worker with the TensorFlow.js CPU runtime available on request. Network requests and access to the Eltes UI are blocked. Selected model files stay in this tab and are not sent to a hosted model. This is not an OS shell or a complete security boundary.

Choose a compatible model.json and its weight shards to use loadLocalGraphModel() or loadLocalLayersModel(). Model weights are not included. Files are read locally and never added to the chat.

Code to run

      
OutputNot run yet.
Logs and returned values appear here.

HTML preview

Isolated preview · scripts cannot access this app or your files.

Are you sure?

This cannot be undone.