Your AI clone — personal context that travels with you.
null0 is a CLI tool that builds a persistent memory of who you are and injects it into any AI agent you work with. It learns your persona, skills, preferences, and decision-making patterns, then makes that context available everywhere: in chat, in code agents, via clipboard, or through MCP.
Install via curl:
curl -fsSL https://null0.ai/install.sh | bash
Or install via npm:
Or install via Homebrew (macOS):
brew tap null0-ai/null0
brew install null0
Then set up and use:
null0 init # Set up your profile (takes ~2 minutes)
null0 # Launch chat (auto-runs null0 chat if initialized)
null0 remember "I prefer TypeScript over JavaScript" # Teach null0 something new
null0 visualize # Open an interactive mind map of your context
Enable verbose error logging:
NULL0_DEBUG=true null0 chat
| Feature | Description |
|---|---|
| Personal Context | Stores your persona, skills, preferences, hobbies, tone, and memories in structured markdown files |
| Smart Memory | Auto-categorizes what you tell it into the right context file using AI |
| Knowledge Graph | Backs your memory with Cognee — a semantic knowledge graph that improves search over time |
| Tone Analysis | Learns your writing style so AI responses match how you actually communicate |
| Decision Support | Gives personalized advice based on your values and past decisions |
| Clone Mode | Makes the AI respond as you, using your full context |
| Mind Map | /visualize generates a draggable, interactive graph of everything the AI knows about you |
| MCP | Exposes your context as a Model Context Protocol server |
| Multi-Provider | Works with Claude, Codex, and Gemini out of the box |
null0 init Interactive setup wizard
null0 chat Start the chat REPL
null0 remember Add to memory (auto-categorized)
null0 forget Remove from memory (fuzzy match)
null0 visualize Generate and open your context mind map
null0 inject Output context for pasting into AI sessions
null0 inject -c Copy context directly to clipboard
null0 status Show current config
null0 security Audit file permissions (--fix to repair)
null0 logout Remove credentials
null0 uninstall Completely remove null0 and all data
/help Show available commands
/remember Save to memory (--project for project scope)
/forget Remove from memory
/train Analyze and learn your writing style
/decision Get advice based on your values
/safeguards Set boundaries the AI respects
/clone Enter AI clone mode
/exit Exit clone mode
/projects Manage projects
/model Switch AI model
/theme Change terminal theme
/chats Browse saved conversations
null0 stores everything in ~/.null0/:
~/.null0/
├── persona.md Who you are
├── skills.md What you know
├── preferences.md How you like things done
├── hobbies.md What interests you
├── tone.md Your writing style (generated by /train)
├── safeguards.md Boundaries and values
├── decisions.md Decision-making patterns
├── knowledge/
│ └── global.md General memories
├── mindmap.json Last generated mind map graph
├── mindmap.html Interactive mind map viewer
├── config.json Provider and model config
└── .cognee/ Cognee knowledge graph data
When you add a memory, null0 uses AI to categorize it into the right file. The Cognee knowledge graph runs in the background, building semantic relationships between everything you’ve taught it.
null0 visualize reads all your context, generates a node graph using AI, and opens it in the browser:
- Drag nodes to rearrange
- Scroll to zoom in and out
- Click and drag the background to pan
- Hover any node for details
- Color-coded: purple = you, blue = categories, gray = details, green = cross-cutting themes
The graph is only regenerated when you explicitly run visualize — not on every memory update — so it stays fast.
null0 uses Cognee as a semantic knowledge graph layer on top of your context files:
- cognify — Builds a knowledge graph from your stored text
- memify — Adds memory algorithms to improve recall
- search — Finds relevant memories semantically when building context for a prompt
The bridge runs as a Python subprocess with Gemini embeddings (768-dim). It updates in the background after new memories are added, debounced at 30 seconds.
null0 stores credentials in your system keychain — nothing is written to disk in plaintext.
| Provider | Method |
|---|---|
| Claude | OAuth via claude CLI (setup-token) |
| Codex | Browser-based OAuth via codex CLI |
| Gemini | API key (entered during init) |
src/
├── auth/ Credential storage and OAuth flows
├── chat/ Streaming chat provider (Claude, Codex, Gemini)
├── commands/ CLI command implementations
│ ├── chat.ts Chat REPL entry
│ ├── init.ts Setup wizard
│ ├── remember.ts Memory addition
│ ├── forget.ts Memory removal
│ ├── visualize.ts Mind map generation and rendering
│ ├── code-orchestrator.ts Iterative code execution
│ └── ...
├── memory/ Context management
│ ├── memory.ts Add/remove/search memories
│ ├── cognee.ts Cognee Python bridge
│ ├── ai-context.ts AI-powered categorization and optimization
│ ├── inject.ts Context assembly for prompts
│ └── tone-analyzer.ts Writing style analysis
├── storage/ File I/O, config, audit logging
├── ui/ Ink-based terminal UI components
├── mcp/ Model Context Protocol server
└── index.ts CLI entry point (Commander)
Stack: TypeScript, ESM, Commander.js, Ink (React for terminal), Vitest, tsup.
git clone https://github.com/null0-ai/null0-cli.git
cd null0-cli
npm install
npm run build # Build
npm run dev # Watch mode
npm test # Run tests
npm link # Make `null0` available locally
Tests live in src/**/__tests__/*.test.ts. Use Vitest conventions. Always use .js extensions in imports (NodeNext resolution).
Contributions are welcome. Read CONTRIBUTING.md for the full guide. The short version:
- Open an issue or discussion first
- Fork, branch, implement, test
- Commit with Conventional Commits (
feat:,fix:,docs:, etc.) - Submit a PR
For new commands: add to src/commands/, export from src/commands/index.ts, register in src/index.ts.
- All credentials stored in system keychain via
keytar - Context files created with
0600permissions - Run
null0 securityto audit,null0 security --fixto repair - No background processes persist after exit
- No PII in the open source code
MIT — see LICENSE.