World's lamest AI notes assistant!
Robo Mom is a CLI application that lets you chat with your Markdown notes using AI. It uses RAG to search your notes and provide relevant responses based on your personal knowledge base.
- Node.js (latest version)
- pnpm package manager
- Gemini API key
-
Clone the repository:
git clone <repository-url> cd robo-mom
-
Install dependencies:
pnpm install
-
Create a
.envfile with your Gemini API key:GOOGLE_GENERATIVE_AI_API_KEY=your_gemini_api_key_here
First, index your Markdown notes into the database:
# Load all Markdown files from a directory
pnpm run cli load-files "path/to/your/notes/**/*.md"
# Example: Load example notes
pnpm run cli load-files "example_notes/**/*.md"Start an interactive chat session:
pnpm run cli chatIn the chat interface:
- Type your questions and press Enter to send
- Type
/exitto quit the application - Type
/newto start a new conversation
- Node.js with TypeScript
cittyfor command-line interfaceink(React for CLI) with streaming textVercel AI SDKwith Gemini integrationPGlite(file-based PostgreSQL) withDrizzle ORM- Vector search with
pgvectorusing a local embeddings model via Transformers.js
src/
├── cli.ts # Main CLI entry point
├── app.tsx # React app for chat interface
├── commands/ # CLI command definitions
├── db/ # Database layer
├── dev-tools/ # Development utilities
│ ├── db-cli.ts # SQL query interface
│ ├── rag-cli.ts # RAG testing tool
│ └── ripgrep-cli.ts # Ripgrep testing tool
├── ui/ # React components
The app uses a single notes table with the following structure defined in db/schema.ts.
The project includes several development tools to help with debugging and testing:
Execute SQL queries against the local database:
# Execute a single query
pnpm run db:cli --query "SELECT * FROM notes LIMIT 5"
# Interactive SQL shell
pnpm run db:cli --interactive
# Save results to file
pnpm run db:cli --query "SELECT * FROM notes" --output results.jsonLaunch Drizzle Studio for visual database management:
pnpm run db:studioTest the retrieval-augmented generation system:
# Basic search
pnpm run rag:cli "project ideas"
# With limit and verbose output
pnpm run rag:cli "meeting notes" --limit 5 --verboseTest text-based search functionality:
# Basic pattern search
pnpm run ripgrep:cli "TODO"
# Case-insensitive search
pnpm run ripgrep:cli "todo" --flags "-i"
# Word boundary search with limit
pnpm run ripgrep:cli "test" --flags "-w" --limit 10pnpm run cli: Run the main CLI applicationpnpm run db:migrate: Generate and run database migrationspnpm run db:studio: Launch Drizzle Studiopnpm run db:cli: Database query interfacepnpm run rag:cli: RAG testing toolpnpm run ripgrep:cli: Ripgrep testing toolpnpm run check: Run code quality checks (Biome + TS)
- Run
pnpm run db:migrateto set up the database - Use
pnpm run cli load-filesto index your notes - Use
pnpm run rag:clito test document retrieval - Use
pnpm run ripgrep:clito test text search - Use
pnpm run db:cliorpnpm run db:studiofor database queries - Use
pnpm run cli chatto test the full application
- Fork the repository
- Create a feature branch
- Make your changes
- Run
pnpm run checkto ensure code quality - Submit a pull request
This project is licensed under the Unlicense. Do whatever you want with it. I don't give a flying fuck.