Afterglow

Afterglow

Run Afterglow locally to turn exported QQ and WeChat chat logs into a searchable AI friend that answers in a real person's voice

61/100MonitorFreeFree

The most considered take on AI companionship I've reviewed: it doesn't invent a character, it tries to preserve one from your own chat logs. Three indexes, five-way recall with RRF, optional reranking, separate circadian and life_state profiles, and a policy layer that can choose silence add up to far more than a persona prompt. Pick it if you have real QQ/WeChat exports and care where the data lives; skip it if you want something working in five minutes without a terminal.

Verified 1d ago · liveness 61/100 · cite: rightaichoice.com/tools/afterglow

Best for
  • People with large exported QQ or WeChat histories who want to keep talking in a familiar tone
  • Privacy-conscious users keeping vectors, personas and image caches under backend/.data/
  • Developers who want an OpenAI-compatible endpoint returning policy decisions and memory provenance
  • Tinkerers willing to run a Python or Docker backend and route each model role separately
Not ideal for
  • Anyone who wants a companion app running in five minutes with no backend, terminal or .env editing
  • Users with thin, incomplete or badly skewed chat exports — retrieval quality collapses on a poor corpus
  • Anyone intending to impersonate, harass or publicly share another person's chat records
Visit Website

IntermediateFor a developer already running Python or Docker: roughly an evening, most of it in the eight-step /config/ wizard plus the mandatory full backend restart. For a non-technical user: not a same-day install — expect to install uv or Docker, provider keys or local models, and debug the documented .env pitfalls before first real conversation. Add extra time if you are self-hosting chat, embedding andWebNo public APIVerified 1d ago
Pricing
Free
FreeFree tier2 hidden costs
Learning curve
Intermediate
For a developer already running Python or Docker: roughly an evening, most of it in the eight-step /config/ wizard plus the mandatory full backend restart. For a non-technical user: not a same-day install — expect to install uv or Docker, provider keys or local models, and debug the documented .env pitfalls before first real conversation. Add extra time if you are self-hosting chat, embedding and
Runs on
Web
No public API
Who it's for
Someone with years of exported QQ history who wants to keep a familiar voicePrivacy-focused tinkerer who wants no text leaving the machineDeveloper wiring Afterglow into an existing IM-style client
Live sentiment
Is Afterglow actually worth it?

We scan live Reddit threads, YouTube comments, X posts, G2 reviews and other communities — and hand you an honest verdict in under a minute.

  • Honest verdict, not marketing
  • Real pros & cons from real users
  • Attributed quotes with receipts
Run a free scan

3 free scans · no card needed

Skip it if

Skip Afterglow if you want a companion app you can install and use in five minutes, or if your QQ/WeChat export is thin — there is no backend, terminal and .env editing to skip here.

The 30-second take
Biggest gripe

If you point any model role — chat, embedding, tagging, life-state, decision, reranker or web reading — at a cloud provider instead of a local service, that text leaves your machine and you pay that provider's rates.

Price reality

The project is published openly on GitHub under AGPL-3.0 and there is no visible commercial tier on the site, so the real cost is your own infrastructure: a machine to run the backend, plus either local model hosting or whatever you spend with an OpenAI-compatible provider such as DeepSeek, Moonshot, Qwen or ollama. Compare that against subscription companion apps where you pay a flat monthly fee and hand over your chat data.

In short

Afterglow — Run Afterglow locally to turn exported QQ and WeChat chat logs into a searchable AI friend that answers in a real person's voice. Best for People with large exported QQ or WeChat histories who want to keep talking in a familiar tone, Privacy-conscious users keeping vectors, personas and image caches under backend/.data/, Developers who want an OpenAI-compatible endpoint returning policy decisions and memory provenance. Free to use.

What people actually say about Afterglow — is it worth it?

We scanned public community sources for Afterglow on Aug 21, 2026 and could not establish that the discussion we found is about this tool rather than something else sharing its name. Our own analysis of that scan says the posts were off-subject. Rather than publish a sentiment score built on the wrong subject, we publish nothing here and re-run the scan.

Viability Score

61/100
Monitor

How well maintained and how widely used is Afterglow? Built from what the vendor actually publishes (docs, changelog, tutorials, integrations, pricing), whether the site is live, and how much real users discuss it. How we calculate this

Recent activity
90
Traction
100
Site health
95
User sentiment
32
What the vendor publishes
0

Last calculated: October 2026

How we score →

Key Features

  • Import QQ chat history via QQChatExporter V5
  • Import WeChat arkme-json and ChatLab JSONL records
  • PII masking for phone numbers, emails, ID cards, bank cards and IPs at import
  • Three-index hybrid retrieval across response_pairs, friend single-sentences and multi-turn windows
  • Five-way vector recall with RRF fusion of candidates
  • Optional query rewrite for short queries like 在吗 or 想你了
  • Optional Cross-encoder reranking, e.g. Qwen3-Reranker-8B
  • persona_card.md long-term tone profile and per-topic persona_style_profile.json
  • circadian_profile.json sleep/wake portrait plus runtime life_state
  • Interaction policy layer outputs reply, silence, delay, image or sticker before generation
  • Rules-engine fallback for risky scenarios with optional bounded small-model review
  • Relationship memory distilling recent user context into prompts
  • Memory provenance metadata returned with each reply
  • OpenAI-compatible Chat Completions and Responses protocols
  • Split AI replies into multiple chat bubbles on blank lines

About Afterglow

FreeIntermediateNo APIWeb

Afterglow (续·温) is a self-hosted AI companion system: you feed it exported QQ or WeChat conversations, and it builds a searchable relationship memory that lets a familiar person talk back in something close to their original tone. It's built for people with substantial chat history who want continuity rather than a fictional character invented by a vendor. Import accepts QQChatExporter V5 plus WeChat arkme-json and ChatLab JSONL records. Before anything is stored, the pipeline normalizes emoji, @ mentions and system messages, masks phone numbers, emails, ID cards, bank cards and IPs, then splits the corpus into three chunk types: response_pairs, friend single-sentences and multi-turn windows. At chat time a hybrid retriever runs five-way vector recall with RRF fusion, optional query rewrite for short messages like 在吗 or 想你了, and optional Cross-encoder reranking such as Qwen3-Reranker-8B. Long-term tone lives in persona_card.md and persona_style_profile.json, while a circadian_profile.json and runtime life_state let it answer 在干嘛 or 睡没睡 against the actual day. A policy layer decides reply, silence, delay, image or sticker before the main model writes a word, with a rules engine as fallback in risky scenarios. Each model role — chat, embedding, tagging, life-state, decision and reranker — can point at a cloud or local service. Data sits in backend/.data/ by default and the repo carries no remote upload logic, though any cloud role you configure sends that text to that provider. Setup runs through an eight-step /config/ wizard; deployment is Python via uv or Docker under AGPL-3.0. Compared with hosted companion apps, Afterglow trades convenience for provenance: every reply can cite which historical conversations it drew on.

Behind the Verdict

Where Afterglow earns its keep is provenance. Every reply can point back to the historical conversations it leaned on, and that changes how you read the output — you can see whether it's echoing a real habit or drifting into generic chatbot phrasing. Pick this when you have years of QQ or WeChat history and a specific person's voice you want preserved. The split model-role design suits budget-conscious tinkerers: point chat at a cheap cloud API, keep embeddings and personas local, and tune the tradeoff per role. The interaction policy layer is the part I'd defend hardest — letting the system choose silence, a delay, or a sticker is what makes replies feel like a rhythm instead of a response stream. Pass if you need a companion app that runs without a terminal, a Python environment or .env editing. The eight-step /config/ wizard is friendlier than hand-writing config, but you still restart the backend afterward and you still debug your own deployment. Users report retrieval quality collapsing when exports are thin or dominated by the wrong period of a relationship — that's a data problem no config fixes. The closest alternative in spirit is a generic roleplay setup with a long persona prompt plus a vector store. Afterglow's edge is the packaging around that idea: three index types, RRF fusion, optional query rewrite for short queries, and Cross-encoder reranking when the candidate pool gets noisy. Where it bites: anything pointed at a cloud provider leaves the machine, so full offline means every role local and web retrieval off. One recent Hacker News mention of "Afterglow" refers to an unrelated macOS screen-saver project — ignore that coverage when researching this tool. And the project's own boundary section is blunt: not a stand-in for a person, not a

Researching Afterglow? Get your full AI stack in 60 seconds.

Free, no signup — tell us your goal and get tools matched to your budget & existing stack.

Real-world workflow fit

Concrete scenarios for the personas Afterglow actually fits — and what changes day-one when you adopt it.

Someone with years of exported QQ history who wants to keep a familiar voice

Export the conversation with QQChatExporter V5, start the backend with uv run uvicorn, follow the eight-step /config/ wizard through identity, relationship, chat model, vector and tagging services, optional features, retrieval tuning, chat import and access password, then Ctrl+C and restart to enter normal Chat API mode.

Outcome: Import normalizes emoji and @ mentions, masks phone numbers, emails, ID cards and bank cards, generates persona_card.md, persona_style_profile.json and circadian_profile.json, and the first replies pull evidence from real past messages with a memory-provenance trace.

Privacy-focused tinkerer who wants no text leaving the machine

Point the chat, embedding, tagging, life-state, decision and rerank roles at local services, disable web search and page reading, keep data in backend/.data/, and use the interaction policy layer so silence, delays and sticker sends are decided before the main model writes anything.

Outcome: Conversations run offline end to end with vectors in LanceDB, and risky scenarios still hit the rules-engine fallback instead of relying on the model alone.

Developer wiring Afterglow into an existing IM-style client

Call the OpenAI-compatible Chat Completions or Responses endpoint, read back the policy decision, memory provenance and split-reply metadata, and render replies as separate bubbles split on blank lines.

Outcome: The client shows IM-style message rhythm and a trace of which historical conversations each reply drew on, without the developer reimplementing the retrieval and policy layers.

Use Cases

Models Under the Hood

Qwen3-Reranker-8B

as of 2026-09-01

Limitations

  • Setup is the main cost.
  • You need Python with uv or Docker, and you will almost certainly edit an .env — the configuration wizard is recommended for first use precisely because a full environment file is fiddly.
  • The footguns are documented and real: after finishing the wizard you must Ctrl+C and fully restart the backend before it enters normal Chat API mode; uv run with --reload only watches .py changes, so .env edits need a full restart; the model field a client sends is a placeholder and the actual CHAT_MODEL from .env always wins; and setting API_AUTH_REQUIRED=false does not disable XUWEN_API_KEY, which is enforced whenever a key has a value.
  • You do not have to run analyze_persona.py separately, since import and profile generation are integrated into the wizard.
  • Output quality tracks your corpus — thin exports, or ones where later bad stretches dominate, produce replies that reflect that imbalance rather than an earlier version of the person.
  • Local storage is the default and the repo has no remote upload logic, but any model role you point at a cloud provider — chat, embedding, tagging, life-state, web search or page reading — sends that text to the provider you chose; full offline operation requires pointing every role locally and turning network features off.
  • The project is licensed AGPL-3.0 and appears to be maintained by an individual with a QQ community group rather than a company.

as of 2026-10-08

Verification history

We have re-verified Afterglow 10 times since . Each pass re-reads the vendor's own pages and re-checks every listed field against that evidence; passes where nothing had changed are marked as such.

  1. — re-verified summary, description, our verdict, our analysis, pricing model, pricing tiers, features, integrations, who it suits, who should skip it
  2. — re-verified summary, description, our verdict, our analysis, pricing model, pricing tiers, features, integrations, who it suits, who should skip it
  3. — re-checked, vendor evidence unchanged
  4. — re-verified summary, description, our verdict, our analysis, pricing model, pricing tiers, features, integrations, who it suits, who should skip it
  5. — re-checked, vendor evidence unchanged
  6. — re-checked, vendor evidence unchanged

Showing the 6 most recent of 10 verification passes.

Free to cite with attribution — this page re-verifies continuously.

Hidden costs & gotchas

What the public pricing page doesn't put in bold. Captured from pricing-page footnotes, contract terms, and recurring complaints.

  • If you point any model role — chat, embedding, tagging, life-state, decision, reranker or web reading — at a cloud provider instead of a local service, that text leaves your machine and you pay that provider's rates.
  • Running everything locally to stay private means hosting chat, embedding, tagging and rerank models yourself, which shifts spend from API bills to your own GPU or CPU time.

Where the pricing makes sense

The company stage and team size where Afterglow's pricing actually pencils out — and where peers do it cheaper.

The project is published openly on GitHub under AGPL-3.0 and there is no visible commercial tier on the site, so the real cost is your own infrastructure: a machine to run the backend, plus either local model hosting or whatever you spend with an OpenAI-compatible provider such as DeepSeek, Moonshot, Qwen or ollama. Compare that against subscription companion apps where you pay a flat monthly fee and hand over your chat data.

Setup time & first value

How long it actually takes to get something useful out of Afterglow — broken out by persona, not the marketing-page minute.

For a developer already running Python or Docker: roughly an evening, most of it in the eight-step /config/ wizard plus the mandatory full backend restart. For a non-technical user: not a same-day install — expect to install uv or Docker, provider keys or local models, and debug the documented .env pitfalls before first real conversation. Add extra time if you are self-hosting chat, embedding and

Switching to or from Afterglow

How to bring data in from common predecessors and how to get it back out — written for the switcher, not the buyer.

Migrating in
  • →From a hosted companion app: export your QQ or WeChat history, run it through QQChatExporter V5 or the WeChat arkme-json / ChatLab JSONL path, and import through the wizard.
  • →From a hand-rolled RAG persona prompt: replace the single system prompt with Afterglow's three indexes and let persona_card.md and persona_style_profile.json carry tone instead.
  • →From a generic chatbot client: point it at Afterglow's OpenAI-compatible Chat Completions or Responses endpoint and pass the model field as a placeholder.
Migrating out
  • ↗To a hosted companion app: there is no export path documented from personas and vectors back to a third-party service, so you would rebuild the prompt from your own chat exports.
  • ↗To a custom RAG stack: persona_card.md, persona_style_profile.json, circadian_profile.json and the LanceDB vector index are local files you can keep reading after you stop running the backend.

Resources & Guides

Tutorials & Learning

YouTube returned 6 videos for “Afterglow”, and we withheld 6: 6 could not be judged, because “Afterglow” is a single word that other videos use for other things. We are showing none, because we could not prove any of them are about Afterglow.

Tools that pair well with Afterglow

Common stack mates teams adopt alongside Afterglow, with the specific reason each pairing earns its keep.

Featured Head-to-Head Comparisons

Alternatives to Afterglow

View all
Character.AI Mobile

Character.AI Mobile

Character.AI Mobile brings a 10M+ character library of AI personas to iOS and Android for roleplay and voice chat.

FreemiumTry
EMOCHI World

EMOCHI World

EMOCHI World is a native iPhone app for chatting and role-playing with AI characters that keep their own voice, memory, and personality.

FreemiumTry
Linky AI

Linky AI

Linky AI lets you chat with voice-and-text AI characters that have distinct personalities and backstories.

FreemiumTry

Frequently Asked Questions

Used Afterglow? Help shape our editorial sentiment research.