Quick Start
AIProfile is a structured, agent-readable identity and context layer for people, companies, projects, and institutions.
It extracts durable memory locally using a GGUF model, stores that memory in encrypted SQLite, and exposes it through MCP so compatible clients can ask questions, draft responses, and respect the profile's boundaries.
No cloud API is required.
Prerequisites
- Node.js 22 or later
- Free disk space for the selected local model.
qwen3-4bneeds about 2.5 GB. - macOS, Linux, or Windows. Metal and CUDA acceleration are detected automatically.
- C++ build tools for the SQLite native addon. On macOS, run
xcode-select --install.
Install from source
npm install --ignore-scripts=false
npm run setup-model
npm run build
npm startThe install command explicitly enables npm install scripts because AIProfile uses native dependencies, including better-sqlite3 for encrypted SQLite storage and local model runtime packages. If your npm config disables scripts globally, those native bindings may not be installed.
The server starts on:
http://localhost:3000/mcpFor MCP call traces and local LLM prompt/output snippets, start with:
npm start -- --debugCreate the encrypted vault
The first startup asks you to create a memory password. AIProfile uses that password to initialize encrypted storage automatically.
Remember it or store it securely. Encrypted memory cannot be recovered if the password is lost.
Create an OAuth grant
By default, unauthenticated clients can only use public-safe ask. To connect as the owner with permission to read all memory and ingest new content, create an OAuth grant after the first server startup has created the encrypted vault:
npm run auth -- grant add \
--subject owner \
--preset owner-fullThe command prints a one-time approval code. Add http://localhost:3000/mcp in a desktop or terminal MCP client, let the client open the AIProfile authorization page, and approve with that code.
For ChatGPT or another web-hosted client, use an HTTPS tunnel:
ngrok http 3000If ngrok gives you https://abc123.ngrok-free.app, set:
auth:
mode: local
anonymous_enabled: true
issuer: https://abc123.ngrok-free.app
resource: https://abc123.ngrok-free.app/mcpStop AIProfile, create a grant bound to the public resource, confirm the grant appears, then restart AIProfile. With encrypted memory, the server loads the local database at startup, so the grant should exist before the server restarts.
npm run auth -- grant add \
--subject chatgpt-owner \
--preset owner-full \
--resource https://abc123.ngrok-free.app/mcp
npm run auth -- grant listRestart AIProfile:
npm startThen add https://abc123.ngrok-free.app/mcp in ChatGPT, Claude, or Codex.
The subject is only a local audit label. Possession of the one-time approval code authorizes the connection. See Authentication for narrower grants, scopes, revocation, and tunnel guidance.
Basic usage
Start with suggest_question if you have no memory yet:
suggest_question -> owner answers -> ingest -> askExample flow:
User -> Claude Desktop -> suggest_question()
<- "What should I know about who you are and what kind of work you do?"
User answers: "I'm Ignacio, I lead engineering and product teams..."
User -> Claude Desktop -> ingest(content="I'm Ignacio...", source_type="owner_answer")
<- "Added 6 memory items."Ask a question using stored memory:
ask(
question="What would Ignacio think about using guilds in an engineering org?",
mode="likely_opinion",
audience="public"
)Next steps
- Use the package without cloning through NPX usage.
- Connect a desktop or CLI client in MCP Clients.
- Review Model Setup to choose a local GGUF model.
- Review Memory for import, export, and storage details.