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

oh-my-secretary

v0.2.6

Published

Local-first secretary harness for Claude Code

Readme

Oh-My-Secretary banner

Oh-My-Secretary

Make Claude your own Jarvis.

npm License: MIT Node.js

Oh-My-Secretary is a multi-agent harness for running Claude Code as a 24/7 personal secretary. OMS uses the secretary as the front door, then routes bounded work to specialists such as researcher, writer, librarian, and scheduler.

The goal is not to build yet another perfect coding harness. Plenty of people are already doing that well. OMS wraps the already powerful Claude Code runtime around daily requests, source organization, writing, recurring work, a personal wiki, and quiet long-running operation.

Configure it once, keep the background gateway running, and talk to your secretary from Telegram or another configured channel.

"I built this after wiring GPT into OpenClaw and Hermes Agent, then deciding I had seen enough 'if you want...' footnotes for one lifetime."

Quick Start

1. Install

npm install -g oh-my-secretary

2. Run The Wizard

oms setup --wizard

The wizard configures your name, channel, dedicated OMS Claude home, wiki vault, schedules, and search mode. When a channel is configured, it also registers the launchd daemon so the first run needs fewer follow-up commands.

The wizard lets you choose between two search modes:

  • Token Saver Mode (default): BM25 local wiki search with no extra LLM API key required.
  • Graphify Semantic Mode (optional): Builds a relationship graph for wiki notes and improves search with semantic boost. Requires ANTHROPIC_API_KEY or MOONSHOT_API_KEY. The Graphify README describes the Karpathy-style /raw comparison as “71.5x fewer tokens per query vs reading the raw files.” The first build spends tokens; later queries reuse the compact graph.

3. Check Health

oms doctor

Checks configuration, daemon, wiki, Graphify, and schedule status.

4. Start The Secretary

oms start

Then send requests through Telegram or another configured channel.

For 24/7 secretary use, the channel daemon starts Claude Code with --dangerously-skip-permissions and OMS enables Claude Code's user-level skipDangerousModePermissionPrompt setting so Telegram/Discord replies are not blocked by dangerous-mode confirmation prompts. Use OMS channels only on trusted personal machines and with allowlisted users/channels, because this mode is intentionally unattended.

Claude Code may still require one-time interactive workspace trust approval for the folder where oms start runs. If the channel shows Accessing workspace and does not answer, SSH into the machine and run cd <trusted-workspace> && claude --dangerously-skip-permissions, choose Yes, I trust this folder, then run oms restart.

Enable schedules when you want recurring work:

oms start --schedules

Daily conversation digest and update checks run through launchd schedules.

Why Oh-My-Secretary?

Most agent harnesses focus on coding. They are great for repository analysis and build/test/fix loops, but a personal secretary needs a different feel.

  • You should be able to talk from everyday channels, not only coding sessions.
  • It should remember tone, preferences, names, and repeated context.
  • Sources and conversations should become searchable wiki material.
  • Responses should be short enough to use, not padded with explanations.

General chat UIs and ChatGPT-style model usage can become verbose. OMS tunes the secretary prompt and routing rules toward “say only what is needed, do the work in the background.”

Hermes Agent with GPT is broad and powerful, but it can still feel like operating a general autonomous agent with a verbose model attached. OMS keeps Claude Code as the runtime and focuses on short secretary replies, writer/librarian/scheduler routing, macOS launchd, Obsidian wiki, and Hindsight memory.

OpenClaw is stronger as a broad agent platform with many channels and skills. OMS is narrower: Claude Code, macOS launchd, Obsidian wiki, Hindsight memory, and personal secretary tone.

Features

| Area | Feature | |---|---| | Multi-agent routing | The secretary receives requests and routes to researcher, writer, librarian, or scheduler. | | Channel gateway | Talk to a Claude Code-backed secretary from Telegram or another configured channel. | | Local-first runtime | Secrets, logs, state, schedules, and raw data live under ~/.oms. | | Hindsight memory | Recall preferences, names, and repeated context. | | SOUL.md persona | Tune tone and response style in ~/.oms/SOUL.md. | | OMS wiki | Keep source, decision, and concept notes in an Obsidian/Markdown vault. | | Source-backed ingest | Store URL, Markdown, and PDF sources with raw pointers. | | PDF extraction | Keep PDF binaries separate from searchable extracted text. | | Token Saver Mode | Default BM25 wiki search - no extra API key required. | | Graphify Semantic Mode | Optional: build a wiki relationship graph for semantic boost. Requires LLM API key. | | Conversation reuse | Use digest and triage to find “what we discussed last time.” | | launchd schedules | Run daily digest and update checks. | | Doctor/update | Check health and updates with oms doctor and oms update. |

Daily Use

The normal workflow is simple: keep the daemon running and send requests through your channel.

  • Summarize links/PDFs and save them to the wiki
  • Find past conversations, decisions, and sources
  • Write and rewrite in your own tone
  • Run daily digest and update checks
  • Check health with oms doctor
  • Search directly with oms wiki query "..."
  • Clean raw conversation files with oms conversation prune

Common Commands

oms setup --wizard       # interactive setup
oms start                # start the channel gateway daemon
oms start --schedules    # also register recurring schedule jobs
oms restart --daemon     # refresh managed guidance, then restart the daemon
oms doctor               # check installation health
oms ask "..."            # local secretary request

oms wiki add <path|url>  # add source material to raw/wiki storage
oms wiki query "..."     # BM25-first wiki search, graph-boosted when available
oms wiki query "..." --context              # Token Saver compact context
oms wiki query "..." --context --profile compact  # compact profile (~5k tokens)
oms wiki query "..." --context --json       # JSON output with token_saver_context
oms wiki lint            # check wiki hygiene

oms wiki graph setup --install --build --yes --consent-privacy
oms wiki graph export --dry-run
oms wiki graph export --apply --consent-privacy
oms wiki graph build
oms wiki graph query "..."

oms conversation digest          # digest/triage raw conversations
oms conversation prune           # cleanup preview
oms conversation prune --apply   # delete cleanup candidates

oms schedule list        # show registered schedules
oms update --check       # check for a newer release
oms update               # update OMS using the safe path for this install type

For npm installs, oms update runs the global npm update for you:

oms update
oms doctor

Recommended Layout

~/.oms/
  config/              # user configuration
  .secrets/            # channel tokens and credentials
  schedules/           # launchd schedule definitions
  logs/                # daemon/runtime logs
  state/               # runtime state
  notes/               # local notes
  raw/                 # raw source material and conversation JSONL outside the vault
  graphify/            # Graphify staging, graphify-out, build metadata
  SOUL.md              # preferred address, tone, preferences, persona

~/Documents/Sync-for-Mac/_oms-wiki/
  source-cards/        # source summaries and pointers
  concepts/            # concept notes
  decisions/           # decisions
  queries/             # reusable query outputs

Keep human-readable notes in the vault. Keep heavy PDFs, web dumps, long transcripts, and conversation JSONL in ~/.oms/raw.

Requirements

  • macOS for launchd-based daemon and schedules
  • Node.js 20 or newer
  • Claude Code installed and usable locally
  • npm for the public package install
  • Telegram bot credentials if you use Telegram
  • Optional: Obsidian vault, obsidian-cli, Graphify, pymupdf4llm for PDF text extraction

Safety And Privacy

  • oms setup regenerates managed guidance and agent prompts.
  • oms start runs the saved channel configuration.
  • oms doctor checks required assets and optional integrations.
  • Secrets live in ~/.oms/.secrets/ and are referenced with @file: config values.
  • Runtime artifacts, logs, raw data, and local state stay separate from source code.
  • Graphify may use your configured assistant/model provider for semantic extraction, so setup/build requires privacy consent.
  • Sensitive notes are excluded from staging by default unless explicitly included.

License

MIT. See NOTICE for attribution.