Skip to content

callmescine/Lilly

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

223 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lilly — A Personal AI Family Member Built on NanoClaw

"Not an assistant. Not a bot. The tech-savvy younger sister who never gives up."

Lilly is a fully customized wrapper on top of NanoClaw that transforms a generic WhatsApp AI assistant into a deeply personal, autonomous family member. She talks like family, browses the web like a human, and never says "I can't do that."

What NanoClaw Gives You

NanoClaw is the open-source engine — a single Node.js process that connects WhatsApp to Claude, running agents in isolated containers. It handles:

  • WhatsApp connection and message routing
  • Container isolation per group
  • Scheduled tasks and IPC
  • Basic web browsing via agent-browser

What Lilly Adds On Top

🧠 Deep Personality & Family Awareness

  • Full persona with family dynamics — knows who Amma, Daddy, and each family member is
  • Matches energy — hype mode when you're excited, calm when you're stressed
  • Speaks your language — Hindi, Hinglish, or English, matching whatever you send
  • Never robotic — talks like a real sibling, not "As an AI language model..."

🌐 Autonomous Web Task Completion

NanoClaw's agent can browse, but Lilly knows how to think about browsing:

  1. Search → Navigate → Explore → Act — Given "book me a bus to Bangalore," she Googles the best site, opens it, reads the UI, presents options, and fills forms
  2. Decision checkpoints — Never assumes preferences, always confirms before acting
  3. Payment safety — Stops at payment, shows you the screen, lets you take over
  4. Smart site selection — Knows which sites block bots and routes around them

🥷 Stealth Browser (Anti-Bot Detection)

The container ships with a patched agent-browser that defeats common bot detection:

  • Hides navigator.webdriver flag
  • Fakes Chrome plugins, languages, and WebGL fingerprints
  • Patches permissions API and chrome.runtime
  • Disables Blink automation flags via Chromium args
  • Spoofs connection RTT and sanitizes stack traces

This means Lilly can actually use websites that block vanilla Playwright/Puppeteer.

📱 Rich Media Support

  • Receives and processes images, documents, PDFs, voice notes, stickers, and videos
  • Sends images, documents, and stickers back
  • Downloads media to group workspace for persistent access

💬 Real-Time Progress Updates

NanoClaw agents work silently until done. Lilly keeps you posted:

  • Acknowledges tasks immediately ("On it!")
  • Sends updates at every step ("Found 3 options on Ixigo, checking prices...")
  • Shares screenshots while browsing so you can follow along
  • Never goes radio-silent during long tasks

🔑 Auto OAuth Token Refresh

Claude OAuth tokens expire and rotate frequently. Lilly includes a launchd job that:

  • Reads the fresh token from macOS Keychain every 5 minutes
  • Updates .env only if the token has changed
  • Stops any running containers with the stale token so they respawn with the new one
  • Zero downtime — NanoClaw itself never restarts, containers are stateless (all files, sessions, and memory are bind-mounted from the host)

📱 Phone Notifications Preserved

A common problem with WhatsApp Web bots — they mark your device as "online," which suppresses mobile notifications. Lilly fixes this:

  • Connects with markOnlineOnConnect: false so WhatsApp doesn't think you're active on another device
  • Sets presence to unavailable — messages still flow in, but your phone keeps buzzing

🛒 Integrated Services

Pre-configured MCP integrations:

  • Blinkit — Grocery ordering via MCP server with persistent auth
  • Gmail — Read/send emails with auto-refreshing OAuth
  • Google Workspace — Calendar, contacts via gogcli
  • GIF search — gifgrep for sending reaction GIFs
  • Precious metals — Live gold/silver prices from eBullion

📋 The "Never Give Up" Protocol

Lilly's core philosophy — she doesn't know the meaning of "I can't do that":

  • Exhausts all options, workarounds, and alternative routes
  • If she finds an unconventional way, she asks before proceeding
  • Treats every problem as a personal challenge

Project Structure

├── groups/
│   ├── global/CLAUDE.md      # Lilly's personality, skills, and knowledge
│   └── main/CLAUDE.md        # Admin channel with group management
├── container/
│   ├── Dockerfile            # Extended with stealth patch, Go tools, Blinkit MCP
│   ├── stealth-patch.js      # Build-time anti-bot-detection patch for agent-browser
│   └── agent-runner/         # Container entry point
├── scripts/
│   └── refresh-oauth-token.sh  # Keychain → .env token sync
└── src/                      # NanoClaw core (with media, IPC, and routing enhancements)

Setup

  1. Follow NanoClaw's setup guide for the base installation
  2. Customize groups/global/CLAUDE.md with your own personality, family contacts, and preferences
  3. Build the container: ./container/build.sh
  4. Set up token refresh: launchctl load ~/Library/LaunchAgents/com.nanoclaw.refresh-token.plist
  5. Start: launchctl load ~/Library/LaunchAgents/com.nanoclaw.plist

Built With

About

A personal AI family member built on NanoClaw — autonomous web browsing, stealth browser, real-time updates, and a personality that never gives up

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages