GitHub – amaar-mc/null0-cli


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:

  1. Open an issue or discussion first
  2. Fork, branch, implement, test
  3. Commit with Conventional Commits (feat:, fix:, docs:, etc.)
  4. 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 0600 permissions
  • Run null0 security to audit, null0 security --fix to repair
  • No background processes persist after exit
  • No PII in the open source code

MIT — see LICENSE.



Source link

Leave a Reply

Your email address will not be published. Required fields are marked *