CLI tool
beilusaiying/always-accompany avatar
beilusaiying/always-accompany

always-accompany ships a Deno launcher over an npm manifest, and its newest tag is two versions behind

Companionship, chat, coding, and work share one memory and context framework — the kind of AI you see in science fiction: it keeps you company, and it gets things done with you.(这是一个基于上下文和注意力机制做的一个多元化的agent项目)

470 stars6 forksJavaScriptAGPL-3.0

At a glance

What is it?
A single author JavaScript project for chat, coding and work sharing one layered memory, where the install path runs run.sh on a Deno runtime, the release tag stops at 1.0.1 while package.json says 1.0.3, and the roadmap is now subtraction rather than features.
Who is it for?
Treat this as a fast moving solo project with an unusually honest status note, not a finished platform. Two things to check before you invest in it.
Can I use it commercially?
Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
Is it still maintained?
Yes. The repository last received commits 52 days ago.
What is it written in?
Mainly JavaScript, according to GitHub's language statistics.

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

Editorial analysis

The newest tag is 1.0.1 while package.json says 1.0.3

The release history holds a single tag, v1.0, published as v1.0.1 on 2 August 2026. The manifest in the repository root says version 1.0.3, and the last commit on the default branch main is dated 13 August 2026, after that tag. So the tree you clone is two patch versions ahead of anything published, which means there is no release to install, no tag to pin in a deployment, and no guarantee that the changelog describes what you are running. A `CHANGELOG.md` sits at the root, but the version numbers in the manifest and the tag history are maintained separately, and nothing in the project reconciles them. For a project whose pitch is long term memory, the versioning is the least durable part of it.

Two descriptions describe two different products

The one line project description promises companionship, chat, coding and work sharing one memory and context framework, and the README headline calls it a multi-purpose AI and agent project focused on context and attention mechanisms, with dynamic attention, fixed injection, project isolation and specialized modes. The manifest in the same repository describes something else again, opening with "Let AI truly remember you" and calling the project an era-spanning multi-AI-engine collaboration platform. Read the manifest sentence and you would not guess a roleplay client with SillyTavern character card import; read the description and you would not guess a collaboration platform. Anyone writing a tool that reads repository metadata, or a fork deciding what the project is, gets a third answer from the feature list, which spans chat, an IDE coding mode, work mode with presentations, a Live2D companion, six permission templates and a bot system.

A Deno launcher sits on top of an npm manifest

The install path is a shell script, and the script installs a runtime before anything else:

bash
git clone https://github.com/beilusaiying/always-accompany.git
cd always-accompany
run.bat          # Windows
# or chmod +x run.sh && ./run.sh   # Linux / macOS

The launcher downloads the Deno runtime automatically when it is missing and completes installation when dependencies are incomplete, and the interface then appears at `http://localhost:1314`. The repository root, though, is an npm project: `package.json` with a long dependency list, a `package-lock.json`, a `.npmrc`, a `jsconfig.json` rather than a TypeScript config, plus a `deno.json` beside them. Two runtime toolchains in one root, and a quick start block that runs `run.bat` unconditionally with the Unix alternative left in a comment, so the first line a Linux or macOS user copies is the one that fails. The first launch is also expected to be slow, because the runtime downloads dependencies and initializes local data before the page appears.

P1 recall runs before every reply and costs about 2 GiB

P1 is the self-driven local retrieval service, and it is the mechanism the project is named around. Before the main model answers, P1 recalls the excerpts that matter for the current question out of layered storage: editable structured Data tables plus `hot`, `warm` and `cold` JSON and Markdown files for current facts, recent material and archives. Old context leaves by file-read granularity rather than by token window, the cleanup is reversible, and the model can drop files it has already read. The cost is stated plainly, a measured peak on the order of 2 GiB, and P1 can be switched off entirely, which is what makes the project usable as a plain chat client. Each of the four modes, Smart, Chat, Code and Work, keeps its own memory tables and its own P1 routes, so the duplication is by design rather than an oversight.

The bot claim is nine platforms, the manifest names six SDKs

The feature list advertises a bot system covering nine platforms, and the dependency list is where that claim can be checked. It carries `discord.js`, `@slack/bolt`, `@line/bot-sdk`, `@larksuiteoapi/node-sdk`, `dingtalk-stream` and `grammy` for Telegram, which is six named channels, and then `@homebridge/ciao` with `bonjour-service` for discovery on the local network. The model side is comparably plural, with `@anthropic-ai/sdk`, `@google/genai` and `ollama` as three providers, and two tokenizers, `js-tiktoken` and `@anthropic-ai/tokenizer`. Two of those entries deserve a second look from anyone running this on a shared network: answering mDNS-style discovery means the machine announces itself to the local segment whether or not a bot is enabled.

Six permission templates sit over a process that also opens a server

The permission story is six templates plus per-tool rules, and the capability list behind it is files, commands, browser integration, MCP, multiple windows, approvals and recovery. The same process carries `express` and `express-fileupload` for HTTP, `jszip` and `mammoth` for archives and documents, `fluent-ffmpeg` with a bundled ffmpeg installer for media, and `node-notifier` for desktop notifications. Two qualifiers keep this honest. The feature list itself says actual availability and results depend on the selected mode, configuration, environment, model and connected services, so the templates describe an upper bound rather than what any given install exposes. And the development note says the current structure, basic features and edge-case handling may still be unstable, with maturity varying across modules, which is the sentence to reread after configuring a tool that writes files.

The quick start table for the first two steps is empty

The quick start promises two things, a working AI API and the ability to write simple prompts, and then hands the reader to a two column table headed "1. Choose the interface language" and "2. Bind an AI service source". Both body cells are empty, so the two screenshots that belonged there are not in the file and the steps themselves are only described in the sentence after it: enter the service URL, API key and model, save, then select or import a character card. The interface is translated into ten languages, English plus nine README variants covering Simplified and Traditional Chinese, Japanese, Korean, Russian, German, Spanish, French and Portuguese, and the same table is the one place a first-time user is walked through the first two clicks. A wiki is built into the app at `site/wiki/getting-started/overview.md`, with an online copy as well, so the walkthrough exists, just not in the file that promises it.

The roadmap is subtraction, and the plugin protocol comes first

The forward plan is the opposite of a feature list. New plugins and feature areas will no longer be added; the work is reducing the core, lowering coupling, and moving separable features down into the plugin layer, and a detailed, stable plugin protocol has to land before any framework-level optimization or incremental refactoring, alongside better tests, documentation and contribution workflows. The development note behind it is unusually candid: one person built most of it in about three months, then spent roughly a month on algorithm optimization, with AI assistance on some basic features while the frameworks, algorithms and key designs were planned and directed by the author. The plugin surface is where that ambition points, with user plugins writable in JS, Python or as standalone programs and routed through an intermediate relay station that the frontend renders and operates.

Editorial conclusion

Treat this as a fast moving solo project with an unusually honest status note, not a finished platform. Two things to check before you invest in it. The version you clone is 1.0.3 in package.json while the newest tag is v1.0.1, so there is no release to pin and no changelog entry that matches your checkout. And the permission story is six templates plus per-tool rules over a process that also runs an HTTP server, answers local network discovery, writes files and executes commands, with the author stating that edge-case handling may still be unstable. The memory design is the part worth reading, the P1 recall service and the reversible file-granularity cleanup, and it can be switched off if its roughly 2 GiB peak is more than you want to spend.

Frequently asked questions

What does always-accompany need to run?

A working AI API and the ability to write simple prompts, then a clone and the launcher, which downloads the Deno runtime when it is missing and finishes installing incomplete dependencies. The interface normally opens by itself and is also reachable at http://localhost:1314.

How does always-accompany store and recall memory?

Editable structured Data tables plus hot, warm and cold JSON and Markdown files hold current facts, recent material and archives. A retrieval service called P1 pulls the relevant excerpts before each reply, and cleanup happens at file-read granularity, is reversible, and lets the model drop files it has already read.

How much memory does the always-accompany P1 service use?

The README puts measured peak memory on the order of 2 GiB. P1 can be switched off entirely, which is the path for using the project as a plain chat client without the retrieval service.

Which platforms does the always-accompany bot system cover?

The feature list says nine platforms, and the manifest carries SDKs for Discord, Slack, LINE, Lark, DingTalk and Telegram, plus ciao and bonjour-service for local network discovery. The model side names Anthropic, Google and Ollama, with two tokenizer packages.

Official sources

  1. beilusaiying/always-accompany on GitHub
  2. Issues
  3. License: AGPL-3.0
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/beilusaiying-always-accompany.svg)](https://hysenlabs.com/projects/beilusaiying-always-accompany)