Model or dataset
JasonLiu0826/ackem avatar
JasonLiu0826/ackem

Ackem: a local-first AI desktop companion for Windows

Ackem — 本地优先 AI 桌面陪伴 · Local-first AI desktop companion. 隐私数据不上传,支持记忆/情绪/扩展/ 。AGPL-3.0

547 stars68 forksTypeScriptNOASSERTION

At a glance

What is it?
Ackem is an Electron desktop app that pairs any OpenAI-compatible model with structured memory, relationship state and a tray presence, storing everything in a data/ folder next to the executable. The design is coherent; the testing caveat is the part to weigh.
Who is it for?
Adopt Ackem if you want a Windows desktop companion whose memory, diary and credentials never leave a data/ folder you control, and you are comfortable with a solo-maintained project that describes itself as still in active testing. Skip it if you need macOS or Linux builds, a web client, or a maintained support commitment.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository last received commits 4 days ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 17, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

Ackem is a Windows companion app, not a chat window

Most chat front ends treat a conversation as a session. Ackem treats it as a relationship that accumulates. The README frames the project as an Autonomous Companion Keeping Emotional Memory, and the feature list follows that framing: trust, mood, relationship stage, personality presets, a companion diary, and optional proactive messages that the app initiates rather than waiting for you. Conversations become searchable memory, and you can import .txt or .md files as long-term context.

The intended user is someone who wants a persistent desktop presence on Windows and is willing to supply their own model. Ackem ships no model. You point it at any OpenAI-compatible endpoint, which the README lists as DeepSeek, OpenAI, Ollama, or LM Studio, configured under Settings then Model and API. That single decision shapes everything else: the app owns memory, emotion and desktop behaviour, and the LLM owns language. If you already pay for an API or run a local server, Ackem adds the parts a raw model lacks.

The scope is narrower than the feature list suggests. The platform badge says Windows, the download is a win-x64 zip, and no other build target appears in the release notes. This is a Windows application with a local-first data story, not a cross-platform product.

How Ackem splits memory, model calls and desktop presence

The repository layout shows the shape. An Electron main process lives under src/ with electron.vite.config.ts driving the build, a separate voice-service/ directory handles speech, a launcher/ directory and scripts/build-launcher.mjs produce the portable green release, and ackemcode/ sits alongside them. better-sqlite3 is a runtime dependency, so structured memory is a local SQLite database rather than a file dump. d3 is also a dependency, which matches the memory visualization screenshot showing timelines and knowledge connections.

Data flow is deliberately one-directional toward the model. Your conversation goes out to whatever endpoint you configured; memory, diaries, relationship state and API keys stay in data/ next to Ackem.exe, or in local userData for settings. The README states there is no default telemetry to an Ackem server. The embedding model runs locally: onnxruntime-node is an optional dependency, and first launch extracts that model, which the README quotes as 10 to 30 seconds.

Two subsystems stand apart from the core loop. A WeChat bridge routes phone messages to the PC, described as phone messages with the brain on PC. A game mode built on mineflayer and mineflayer-pathfinder lets the companion play supported games such as Minecraft when extensions allow. Both are optional, and the README labels the OpenForU workspace and game mode experimental.

Installing the green release and making the first real request

The end-user path assumes no Node.js. Download Ackem-v1.0.0-win-x64.zip from GitHub Releases or the Gitee mirror, extract it completely to an SSD path, and do not run it from inside the zip. Then launch Ackem.exe, or the batch file the README names as 启动 Ackem.bat. First launch takes roughly 10 to 30 seconds while the local embedding model is extracted; the loading screen closes when that finishes.

If you prefer to build from source, the repository exposes these scripts:

bash
npm install
npm run dist:green

The README gives the output location as dist/release/Ackem-1.0.0-win-x64/. Note that npm install triggers a postinstall step running electron-builder install-app-deps, which is what rebuilds better-sqlite3 against Electron's ABI. A failed native rebuild is the most likely reason a source build produces an app that cannot open its memory database.

Once the main window is open, accept the compliance screen and open Settings, then Model and API. The fields are Base URL, API Key and Model ID. For a local Ollama server the base URL points at your own host, and the model ID must match a model you have pulled; the README does not enumerate valid values, so take them from your provider. Send one message. A reply that references something from an earlier session is the signal that the memory layer, not just the chat layer, is wired up.

Your data location is worth confirming before you type anything sensitive:

bash
ls data/

In a portable green release this folder sits next to Ackem.exe. The README states the official zip does not include data/ and that an empty folder is created on first run. If data/ is already populated in a fresh download, stop and re-download from the official release page.

The testing caveat and the single-platform limit

The README is unusually direct about maturity: Ackem is still in active testing, test coverage is limited because the project is solo-maintained, and you may hit unexpected behaviour or rough edges. It also says frequent crashes and severe lag are uncommon. That is a fair statement of risk, and it should be read as a real constraint rather than boilerplate. There is no published coverage number and no CI badge for tests in the repository, so the practical question is not how stable Ackem is in aggregate but whether the specific path you depend on has been exercised.

The harder limit is platform. Windows 10 or 11, 64-bit, is the only target the README describes. There is no macOS or Linux build, no Docker image, and no self-hosted server mode. If your team runs Linux workstations, Ackem is the wrong tool regardless of how the memory design appeals.

A third constraint is less obvious. Because the LLM is external, the local-first claim covers storage, not inference. Prompts, retrieved memories and imported documents travel to whichever endpoint you configure. A cloud provider sees them; a local Ollama server does not. Ackem's privacy story is only as strong as that choice, and the README's privacy table describes what the official release contains, not what happens after you send a message.

The extension and game subsystems carry their own risk. WeChat bridging and Minecraft control via mineflayer are optional, and the README marks the related workspace as experimental. Treat them as separate adoptions with separate failure modes, not as part of the core promise.

Compared with SillyTavern and Open WebUI

SillyTavern is the closest comparison for the companion use case. It is also a front end over external models, and it also carries character cards, personas and chat history. The difference is where state lives and what shape it takes. SillyTavern is browser-served and character-file oriented: personas and lorebooks are documents you author and swap. Ackem is a packaged Windows app whose state is a SQLite database it writes itself, with trust, mood and relationship stage as first-class fields rather than prompt text you maintain by hand. If you want to hand-craft a character and port it between tools, SillyTavern's file model is more portable. If you want the app to accumulate the state, Ackem does that for you.

Open WebUI is the other reference point. It is a self-hosted chat interface with document retrieval, and it is a better fit for teams: multi-user, server-deployed, reachable from any browser. Ackem is single-user and desktop-bound by design, which is the source of its privacy posture and also its ceiling. There is no shared instance, no browser access, and no admin surface.

Neither comparison is a verdict. The honest summary is that Ackem trades portability and multi-user reach for a desktop presence and an automatic relationship model. If neither of those two things matters to you, a browser-based front end will be less work.

Licence, maintenance and what an upgrade costs you

The repository ships a LICENSE file and the README badge says AGPL-3.0, while the repository metadata reports the licence as NOASSERTION. That discrepancy matters if you plan to redistribute or embed Ackem, because AGPL-3.0 carries network-use obligations that permissive licences do not. Confirm the actual terms in LICENSE and NOTICE.md before building on it; this is a description of what the files say, not legal advice.

The project is not archived and the last push was on 2026-09-14, three days before this writing, so the repository is being touched. Version 1.0.0 was released on 2026-06-29. That is a short history, and a solo maintainer with limited test coverage is a real support risk. If Ackem becomes part of a workflow you depend on, you are relying on one person's availability.

Upgrade cost is low by design. The green release is portable, so replacing the extracted folder leaves your data/ directory untouched, and the README points to docs/memory-format.md and docs/distribution-windows.md for backup, migration and deletion. Read those two files before your first upgrade rather than after. The risk to plan around is schema change: better-sqlite3 holds the memory store, and a release that alters its schema is the scenario where a backup stops being optional.

Editorial conclusion

Adopt Ackem if you want a Windows desktop companion whose memory, diary and credentials never leave a data/ folder you control, and you are comfortable with a solo-maintained project that describes itself as still in active testing. Skip it if you need macOS or Linux builds, a web client, or a maintained support commitment. Before configuring an API key, verify two things in the release: that the extracted folder contains no data/ directory, and that first launch completes the embedding extraction in the 10 to 30 seconds the README quotes.

Frequently asked questions

What does Ackem need to run?

Windows 10 or 11, 64-bit, plus an LLM API key or a local server such as Ollama or LM Studio. The green release needs no Node.js, and first launch spends about 10 to 30 seconds extracting the local embedding model.

Where does Ackem store my chats and API keys?

In the portable green release, chats, memories, diaries and API keys live under data/ next to Ackem.exe, with settings in local userData. The official zip does not include data/, and an empty folder is created on the first run.

Which model providers does Ackem support?

Any OpenAI-compatible API. The README names DeepSeek, OpenAI, Ollama and LM Studio, configured under Settings then Model and API with a Base URL, API Key and Model ID.

Is Ackem stable enough to use daily?

The README states Ackem is still in active testing, that test coverage is limited because the project is solo-maintained, and that unexpected behaviour or rough edges are possible, while frequent crashes and severe lag are uncommon.

Official sources

  1. Issues
  2. JasonLiu0826/ackem on GitHub
  3. README
  4. Releases
Community notes

Community notes