Survival LLM
A free AI assistant and survival library (1.5 million offline articles) that runs on your own computer, with no internet. Shows the source of every answer. Mac and Windows.
翻译准备中
Artemis is an open-source desktop AI agent that lives on your laptop. It reads your files, runs commands, browses the web, and remembers what you tell it. You pick the model, you keep the data, you approve every action.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗An open-source AI agent that lives on your computer. It reads your files, runs your commands, browses the web and remembers what you tell it. You pick the model. You keep the data. You press approve.
Artemis is a desktop app built with Electron + React + Vite. It is independent and not affiliated with Anthropic or any other model provider. There is no built-in default provider: you add your own in Settings, and any server that speaks the OpenAI API (/v1/chat/completions, streaming and tool calling) works.
It is not a chat window glued to one API, and it is not a copilot stuck inside an editor. Artemis works in your files, your terminal and its own browser. It remembers what it learns, it asks before it acts, and it runs with any model, cloud or local.
Chats, notes and memory are plain files on your disk. Every line of code is open: fork it, break it, fix it.
SKILL.md folders (same layout as agentskills.io), per user or per project, learned and improved with use.SOUL.md, USER.md, MEMORY.md, one daily note per day), searched by keywords and optionally by meaning; lasting facts are saved automatically before a long chat is compacted.[[wiki links]] and a graph.artemis command (artemis chat, artemis search, artemis memory search), and a headless mode (artemis gateway) that runs the agent, chats, memory and scheduled tasks without a window.artemis.db with full-text search (chats.json is still written as a backup copy).custom-themes/).The wiki explains how to use every feature, step by step. Start at docs/wiki/Home.md.
| Topic | Pages |
|---|---|
| Set up | Getting Started · Providers and Models · Usage Limits · Appearance |
| Everyday use | Chat and Projects · Files and Attachments · Notes · Memory · Quick Window and Shortcuts |
| Agents and automation | Sub-Agents · Brains · Skills · Scheduled Tasks · Heartbeat and Webhooks · Make |
Download the .dmg from the Releases page, drag Artemis to Applications and open it. The build is unsigned, so macOS asks you to confirm the first launch: right-click the app and choose Open, or go to System Settings → Privacy & Security and click Open Anyway.
Requires Node.js 20+ and pnpm.
git clone <repo-url> artemis
cd artemis
pnpm install
pnpm dev # development (Vite + Electron, hot reload)
pnpm start # build and run the production bundle
pnpm dist # package a macOS arm64 .dmg (unsigned)
pnpm test # unit tests (plain Node scripts, no Electron needed)
Only the macOS arm64 build is packaged. Computer control, Touch ID and the macOS permission checks work on macOS only; the rest runs from source on Windows and Linux.
.xlsx .xls .ods .csv .tsv (write_spreadsheet, update_cells, =formula support). Reads Word (.docx) and PDF.Documents/Artemis/Files) so you can reopen, edit and reuse them..zip or conversations.json).[[wiki links]], graph view). A note opens like a chat: in the current tab, in a new tab (⌘/Ctrl-click) or next to a chat in split view. Artemis can search and read notes when you allow it.<userData>/workspace): SOUL.md and USER.md (yours, added to every chat), MEMORY.md (facts saved with memory_save, editable in the Memory panel or any editor) and daily notes (memory/YYYY-MM-DD.md, today's and yesterday's are added to every chat). memory_search / memory_get / memory_note search, read and write them. See Memory.Full guides: Sub-Agents, Brains, Skills, Scheduled Tasks.
delegate tool runs role agents in parallel (max 4 at once, 12 runs per task). Built-in roles: Athena (Researcher), Hephaestus (Coder), Calliope (Writer), Themis (Reviewer, read-only). Write your own as Markdown files with frontmatter: user agents in <userData>/agents/<slug>.md, project agents in <project>/.artemis/agents/<slug>.md. Sub-agents never get shell, computer control, file deletion or memory.<userData>/brains/<slug>.md.SKILL.md (frontmatter name, description; body: instructions). User skills in <userData>/skills/<slug>/, project skills in <project>/.artemis/skills/<slug>/. Artemis can learn a new skill from a task and improve it later.web_search (through the Brave Search API with your key, or an AI search model on one of your providers; pick one in Settings → Tools) and web_fetch (blocks local and private addresses).browser_* tools. It is separate from your everyday browser.run_command runs in your real shell, and an integrated PTY terminal can be read by the agent. A small blocklist stops obvious disasters (sudo, rm -rf /, shutdown…) but it is not a sandbox; turn on the sandbox (Docker or SSH) to keep commands off this computer.pnpm selftest:computer./audio/speech endpoint).127.0.0.1, bearer token, browser requests refused). Messages that come through it appear live as chats in the window. API: POST /v1/chat (server-sent events), /v1/sessions, /v1/search, /v1/memory, approvals and abort. See Gateway.artemis command (bin/artemis.js, Node.js 22.13+): artemis chat "…", interactive artemis chat, artemis sessions, artemis search …, artemis memory search|list|add|note ….artemis gateway runs the agent, saved chats, memory, skills, agents, scheduled tasks, Telegram, connectors, the browser (Playwright) and computer control (macOS) without Electron. It can run next to the app on the same data folder: chats are shared and merged, and the background jobs (scheduled tasks, Telegram, the API) move to the gateway while it runs. Provider keys come from environment variables, headless.json or the app's saved keys (macOS keychain).run_command in a Docker container (only the project folder, at /workspace) or on another machine over SSH. See Sandbox.electron/mcp-server.js exposes Artemis's settings, notes, memory, terminal, file and lock tools over Streamable HTTP. It listens on 127.0.0.1 only, needs a bearer token and rejects any request with an Origin header. This is how Claude Code or another client can drive the app.Settings → Providers → Add provider (OpenRouter, Cloudflare, OpenAI, Anthropic API, Ollama, LM Studio, or any OpenAI-compatible server). Keys are stored encrypted. Models are addressed as prov:<providerId>:<modelId>. Image and video models are picked in Settings → General from the same providers.
Ollama and LM Studio are in the provider list. A few things to know:
OLLAMA_CONTEXT_LENGTH=16384 (or more) on the server, or create a model with PARAMETER num_ctx 16384 in a Modelfile.Data is stored locally under userData: chats in artemis.db (SQLite, with chats.json kept as a backup copy), memory as Markdown files in workspace/, everything else as JSON. API keys and tokens are encrypted with the OS keychain (Electron safeStorage); connector secrets in mcp.json are encrypted the same way. If the OS offers no encryption (some Linux setups) they are stored in plain text in that folder. If chats.json (or projects/memory) cannot be read, it is set aside as chats.json.corrupt-<time> instead of being overwritten, and chats.json.bak keeps a copy at most 10 minutes old.
Artemis contains no analytics or crash reporting. It only talks to the internet when you use a feature that needs it, or to ask GitHub for the latest release (Settings → General → Updates; the first switch there turns it off, see Updates):
web_search (Brave Search API or an AI search model) and web_fetch, and the integrated browser, wherever you go;get_location (one request to ipwho.is or ipapi.co), only after you approve it;A tray / menu-bar icon opens a small floating Quick window with two tabs, Chat and Search (switch with Cmd/Ctrl+1 / Cmd/Ctrl+2). Click the icon or press the global Quick chat shortcut (default Cmd/Ctrl+Shift+Space) to open it on the Chat tab from any app. Esc hides it; "Open in the main window" moves the conversation into the app. The Search tab finds chats, notes, files and actions without opening the main window.
Command palette: Cmd/Ctrl+K inside the main window searches actions, chats, notes, files and settings pages (fuzzy match; Enter opens, Cmd/Ctrl+Enter opens a chat or note in a new tab, Esc closes).
Shortcuts are set in Settings → General → Keyboard shortcuts (click a box and press the keys, or type an Electron accelerator such as CommandOrControl+Shift+Space; empty = off):
| Shortcut | Default | Where |
|---|---|---|
| Quick chat: open or hide the Quick window on its Chat tab | Cmd/Ctrl+Shift+Space | any app |
| Quick search: open the Quick window on its Search tab | off (e.g. Cmd/Ctrl+Shift+F) | any app |
| Sentinel (voice mode) on/off, without bringing Artemis to the front | Cmd/Ctrl+Shift+A | any app |
| Lock Artemis now | Cmd+Option+Shift+L | any app |
| Command palette | Cmd/Ctrl+K | Artemis window |
Find in chat or note (Enter / Shift+Enter or Cmd/Ctrl+G / Cmd/Ctrl+Shift+G next / previous, Esc closes; not configurable) | Cmd/Ctrl+F | the chat or note pane that has the focus (or is under the mouse) |
| Sentinel push-to-talk (Settings → Voice) | off | any app: press once to talk, again to send (a pause also sends); in the Artemis window you can also hold it. A lone modifier (e.g. Right Option) or a key without Cmd/Option/Ctrl works only in the Artemis window |
A global shortcut another app already uses cannot be registered; Settings shows the error under the field and keeps the old one off. "Open the command palette from the global shortcut when Artemis is focused" makes the Quick chat shortcut open the palette while the Artemis window is in front.
Settings → Security locks the Artemis window behind a password (scrypt, with a one-time recovery code) and Touch ID on a Mac. It can lock when the app starts, after N idle minutes, and when the Mac sleeps; "Lock now" is a button, a global shortcut (lockShortcut), a tray menu item, a command-palette action and the spoken command "Artemis, lock". It is an app lock, not disk encryption, and the lock is off until you set a password.
While locked, the main process refuses every acting IPC channel (electron/lock.js, isBlockedChannel), the MCP server answers "locked", and Sentinel keeps listening. Voice recognition (electron/speaker.js, speaker-fbank.js, voice-gate.js) runs a small offline speaker model on every Sentinel sentence, push-to-talk included: "Only respond to my voice" ignores other speakers, "Lock Artemis when another voice speaks" locks on a stranger, and with voice unlock on your voice opens the lock screen. Another voice hears "Unauthorized access."; repeated failures start an escalating lockdown (5, 15, 60, 240 minutes) that disables voice, password and Touch ID (the recovery code still works) and sends a Telegram alert, optionally with one webcam photo that is never stored. Touch ID can also be required before sensitive approvals (delete, terminal, computer control, connector writes, file writes); scheduled tasks always run and never wait for the lock or Touch ID. A replayed or cloned voice can fool the speaker model, which is why Touch ID for sensitive actions exists.
Voice recognition needs onnxruntime-node (installed by pnpm install) and a ~28 MB model downloaded from Settings → Security. Model: WeSpeaker CAM++ (wespeaker_en_voxceleb_CAM++, CC BY 4.0) from the sherpa-onnx releases; no audio leaves your computer and no recordings are kept.
electron/ main.js (window, wiring) · ipc/ (IPC handlers) · agent.js (tool loop) · tools.js · files.js · preload.js · …
src/ React UI (App.jsx, components/, lib/, styles/)
scripts/ tests (plain Node scripts) and helpers
pnpm test runs every scripts/test-*.js in turn and stops at the first failure. Run one with node scripts/test-tools.js. No Electron is needed.agents.md is the architecture guide: the process split, the tool loop, the approval model, providers, MCP, persistence and the pitfalls to avoid. Read it before a bigger change.Issues and small pull requests are welcome. See CONTRIBUTING.md, the Code of Conduct and SECURITY.md. Artemis can run commands, edit files and control the computer when you allow it, so read the approval cards before accepting.
AGPL-3.0 © 2026 Orbix Lab. You can use, modify and share Artemis, including commercially; changes you distribute, or offer to users over a network, must be released under the same license with their source. Versions released before this change stay available under the MIT license they were published with. Third-party licenses are listed in THIRD_PARTY_NOTICES.md.
Earlier builds were called Ares and kept data in ~/.ares, Documents/Ares Notes and <project>/.ares. Quit the app, then run:
pnpm migrate:ares # dry run, prints what it would do
pnpm migrate:ares -- --apply # moves everything to the Artemis names
| Tools and control | Tools and Approvals · Terminal · Browser · Computer Control |
| Voice and integrations | Sentinel Voice · Phone (Telegram) · MCP · Gateway and CLI |
| Security and help | Security and App Lock · Troubleshooting |
Tabs: drag a tab to reorder it; right-click → Pin tab keeps it compact on the left (pinned tabs survive Cmd/Ctrl+W and "Close other tabs"). Cmd+Option+Left/Right (or Ctrl+Shift+PageUp/PageDown) moves the active tab, middle-click closes a tab, Cmd/Ctrl+1…9 jumps to a tab. Order and pins are restored on the next start.
Closing the main window keeps Artemis running in the tray (needed for the Telegram bot). Quit from the tray menu. Turn this off or enable "start at login" in Settings → General.