AGPL-3.0 · your AI teammate

A member that remembers

Persona memory — a distilled sense of who you are — and a hybrid vector + lexical graph of your code, grounded in one conversation that draws on both. AGPL-3.0 open core; it binds to localhost and holds one person’s memory of their own machine.

Get started$ self-host on localhost
AGPL-3.0
ai-member crystal
0
memories it keeps: a distilled persona and a graph of your code
1
conversation grounded in both — not a chatbot with amnesia
0
of it leaves localhost — one person’s memory of one machine
AGPL
open core; the hosted control plane is where entitlements live
What it is

One library, whole — not a platform you rent

Persona memory

A distilled sense of who you are and how you work — not a transcript, a model of the person it is helping.

A graph of your code

A hybrid vector + lexical graph of the codebase on this machine, so it reasons about your project, not the internet’s.

Grounded conversation

Every reply is grounded in the persona and the code graph at once — memory and context, not one or the other.

Binds to localhost

It runs on your machine and holds your memory there. Nothing is shipped off to be someone else’s training set.

Open at the core

AGPL-3.0. The member itself is yours to run and to read; the commercial control plane is a separate concern.

A control plane, when hosted

ai-member-cloud adds authentication, tenancy and entitlements over the AGPL core — the parts the localhost member deliberately lacks.

By the shape of it

A teammate who forgets you between conversations is a search box. Memory is the whole difference.

2 + 1
40% Persona
40% Code graph
20% Conversation

Two memories, one grounded conversation — persona, code graph, chat.

How it works

Three moves, in order

01
Index

Point it at your code. It builds a hybrid vector + lexical graph of what is actually on this machine.

02
Distill

Over time it forms a persona — a compact model of who you are and how you like to work.

03
Ground

Ask it anything. The reply draws on both the persona and the code graph, and never leaves localhost.

ai-member.ts
import { remember, ground } from 'ai-member';

// a hybrid vector + lexical graph of the code on THIS machine
await remember.index({ root: '~/code/app' });

// a reply grounded in the persona and the code graph — never leaves localhost
const reply = await ground(prompt, { persona, graph });

A teammate who forgets you between conversations is a search box. Memory is the whole difference.

ai-member

Embed it in the app you already run