npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

multis

v0.1.1

Published

A personal chatbot and assistant that runs on your computer

Downloads

204

Readme

                                  ╭────────────────────╮
                                  │  ╔╦╗╦ ╦╦ ╔╦╗╦╔═╗   │
                                  │  ║║║║ ║║  ║ ║╚═╗   │
                                  │  ╩ ╩╚═╝╩═╝╩ ╩╚═╝   │
                                  ╰──╮─────────────────╯
                                     ╰── your AI, your machine, every chat.

A personal and business AI agent that lives in your chat apps — answering questions from your documents, running commands on your machine, and auto-responding to contacts when you want it to.

Runs locally with persistent memory, governed by allowlists and audit logs.

Why multis?

  • Local-first: Your data never leaves your machine
  • All your chats, one config: Telegram, WhatsApp, Signal, Discord — via Beeper bridges or self-hosted Matrix
  • LLM agnostic: Anthropic, OpenAI, Ollama — swap providers without code changes
  • Persistent memory: ACT-R activation decay keeps recent context hot, old conversations fade naturally
  • Document-aware: Indexes PDFs and DOCX with hierarchical section-aware chunking, answers with citations
  • Governed: Command allowlist/denylist + append-only audit logs

Quick Start

npm install
cp .env.example .env    # add your bot token + LLM API key
node src/index.js       # start the bot

Pair with your bot on Telegram using the pairing code shown on startup.

How It Works

┌──────────────┐  ┌──────────────┐
│  Telegram    │  │  Beeper      │  (WhatsApp, Signal, Discord, ...)
│  Bot API     │  │  Desktop API │
└──────┬───────┘  └──────┬───────┘
       │                 │
┌──────▼─────────────────▼──────────────────────┐
│            Message Router                      │
│  commands · RAG ask · chat modes · doc upload  │
└──────┬─────────┬──────────┬───────────────────┘
       │         │          │
┌──────▼──┐ ┌───▼────┐ ┌───▼──────────┐
│ Skills  │ │  LLM   │ │  Indexer     │
│ (shell, │ │ (any   │ │ (PDF, DOCX,  │
│  files) │ │ provider│ │  MD → FTS5)  │
└─────────┘ └────────┘ └──────────────┘
       │         │          │
┌──────▼─────────▼──────────▼───────────────────┐
│  SQLite (FTS5 search · activation decay)       │
│  Governance (allowlist · denylist · audit log)  │
└────────────────────────────────────────────────┘

Why Not openclaw?

Borrowed the good parts — daemon architecture, pairing flow, skill.md pattern — but made it simpler:

  • One config, all chats. openclaw needs a separate API integration per channel (WhatsApp Baileys, Discord bot, Signal, etc). multis uses one config block and talks to Telegram + Beeper bridges + Matrix — all your networks through one setup.
  • Persistent activation-decay memory. ACT-R model (ported from Aurora) means recent context stays hot, old conversations fade naturally. Not just a chat log — a memory with priorities.
  • Structured document chunking. Hierarchical section-aware chunking for PDFs and DOCX (also from Aurora). The bot knows which chapter and section a chunk came from, not just raw text.
  • No gateway, no plugin system. openclaw has a complex gateway + plugin architecture. multis is a flat router with skills — add a command in one file, done.

Features

  • Ask questions/ask or just type naturally. RAG pipeline searches your docs, passes context to the LLM, answers with citations.
  • Run commands/exec ls ~/Documents with governance enforcement (allowlist/denylist)
  • Index documents — Upload PDFs and DOCX files, or /index <path>. Hierarchical chunking preserves document structure.
  • Chat modes — Set any Beeper chat to personal (self-use) or business (auto-respond to incoming messages)
  • Audit everything — Append-only tamper-evident log of all commands and actions

Roadmap

  • [x] POC 1: Telegram bot + pairing
  • [x] POC 2: Skills (shell exec, file read, governance)
  • [x] POC 3: Document indexing (PDF/DOCX → FTS5)
  • [x] POC 4: LLM RAG + chat modes
  • [x] POC 5: Memory (ACT-R activation decay + memory.md)
  • [x] POC 6: Daemon + CLI + security + data isolation
  • [ ] Dogfood: End-to-end testing, polish, daily use
  • [ ] v0.2: Packaging, onboarding docs, npm install -g ready
  • [ ] POC 7: Multi-platform (Beeper Desktop + self-hosted Matrix) — deferred

Tech Stack

Node.js (vanilla, minimal deps) · Telegraf · better-sqlite3 · pdfjs-dist · mammoth

Project Structure

src/
├── bot/handlers.js       # Message router + all command handlers
├── platforms/            # Telegram + Beeper adapters, normalized Message
├── llm/                  # Anthropic, OpenAI, Ollama providers + RAG prompts
├── indexer/              # PDF/DOCX parsing, chunking, SQLite FTS5 store
├── governance/           # Command validation + audit logging
├── skills/               # Shell exec, file read
├── config.js             # ~/.multis/config.json + .env loader
└── index.js              # Entry point

License

MIT