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

@albireo3754/agentlog

v0.2.0

Published

Auto-log Claude Code prompts to Obsidian Daily Notes

Readme

AgentLog

Auto-log Claude Code prompts and Codex turns to Obsidian Daily Notes.

AgentLog is a local-first prompt logger for Obsidian. It captures Claude Code prompts and Codex CLI turn inputs, then appends them to today's Daily Note, grouped by project and session.

Use it as a lightweight developer journal, worklog capture layer, or the first building block for richer Daily Notes automation.

# Requires Bun (https://bun.sh) installed and available on your PATH
npm install -g @albireo3754/agentlog
agentlog init ~/Obsidian

Install it once, start using Claude Code, and your Daily Note fills itself.

What It Does

Claude Code hook / Codex hook → Daily Note append

Why AgentLog

  • Local-first prompt logging with no external service required
  • Obsidian Daily Notes integration that works with your existing vault
  • Project and session grouping so prompts stay readable later
  • Zero copy-paste overhead during normal Claude Code use

Before: You finish a 3-hour Claude Code session. Your Daily Note is empty.

After:

## AgentLog
> 🕐 11:21 — js/agentlog › initialize git and open it in VS Code

#### 10:53 · js/agentlog
<!-- cwd=/Users/you/work/js/agentlog -->
- - - - [[claude_a1b2c3d4-1111-2222-3333-444455556666]]
- 10:53 start building agentlog
- 11:07 open the spec document
- - - - [[claude_e5f6a7b8-1111-2222-3333-444455556666]]
- 11:21 initialize git and open it in VS Code

| Element | Role | |---------|------| | > 🕐 HH:MM — project › prompt | Latest entry (always updated) | | #### HH:MM · project | Project subsection (grouped by cwd) | | <!-- cwd=... --> | Section matching key (hidden in Obsidian Reading view) | | - - - - [[claude_...]] / [[codex_...]] | Session boundary (Obsidian wiki-link) | | - HH:MM prompt | Individual log entry |

No manual logging. No copy-paste. No AI summarization overhead.

Install

# With Bun
bun add -g @albireo3754/agentlog

# With npm
npm install -g @albireo3754/agentlog

# Then configure your vault
agentlog init ~/path/to/vault

AgentLog registers the Claude Code hook as agentlog hook, so the agentlog binary must remain available on your PATH after setup.

Requirements

Usage

Setup

Unified CLI:

# Claude Code
agentlog init ~/Obsidian

# Codex
agentlog init --codex ~/Obsidian

# Claude + Codex
agentlog init --all ~/Obsidian

# Plain folder
agentlog init --plain ~/notes

agentlog init does two things:

  1. Creates ~/.agentlog/config.json with your vault path
  2. Registers or repairs a Claude Code hook in ~/.claude/settings.json using the string matcher format ("matcher": "")

Run agentlog init without arguments to auto-detect installed vaults.

agentlog init --codex:

  1. Verifies that Codex CLI is installed and available in PATH
  2. Creates or updates ~/.agentlog/config.json
  3. Registers a Codex UserPromptSubmit command hook in ~/.codex/hooks.json
  4. Prints a reminder to review/trust the hook in Codex with /hooks if prompted

The default = --all variant is intentionally not supported. agentlog init stays Claude-first for backward compatibility and to avoid failing on machines without Codex CLI.

That's It

Use Claude Code or Codex normally. Claude and Codex prompts are logged from their UserPromptSubmit hook payloads.

How It Works

  1. Claude Code or Codex fires the UserPromptSubmit hook
  2. AgentLog extracts the latest user-visible input and sanitizes it
  3. Resolves your Daily Note path from .obsidian/daily-notes.json, then obsidian daily:path when needed
  4. If the Daily Note is missing in Obsidian mode, asks obsidian daily to create it before writing so your Daily Notes template is preserved
  5. Finds or creates a ## AgentLog section
  6. Finds or creates a #### project subsection matching the current working directory
  7. Inserts a source-prefixed session divider such as [[claude_...]] or [[codex_...]] if the session changed, then appends the entry
  8. Updates the > 🕐 latest-entry line at the top of the section

Steady-state overhead is under 50ms per prompt when the Daily Note already exists. Missing-note bootstrap depends on Obsidian CLI startup. Fire-and-forget, never blocks Claude Code.

Daily Note Format

Obsidian Mode (default)

AgentLog resolves the Daily Note path from .obsidian/daily-notes.json first, then obsidian daily:path when the vault settings are unavailable or unsupported. If the resolved Daily Note is missing, AgentLog runs obsidian daily before writing and only appends after the file exists, preserving the user's Daily Notes template. Obsidian mode does not create a guessed {vault}/Daily/... fallback file; if no safe path can be resolved or the CLI cannot bootstrap a missing note, the hook fails softly and skips the write. Plain mode still writes directly to {dir}/YYYY-MM-DD.md.

Each working directory gets its own #### project subsection. Session changes insert a source-prefixed wiki-link divider such as [[claude_...]] or [[codex_...]]. The > 🕐 blockquote at the top always shows the latest entry across all projects.

## AgentLog
> 🕐 14:30 — kotlin/message-gate › adjust the API response

#### 10:53 · js/agentlog
<!-- cwd=/Users/you/work/js/agentlog -->
- - - - [[claude_a1b2c3d4-1111-2222-3333-444455556666]]
- 10:53 start building agentlog
- 11:07 open the spec document

#### 14:00 · kotlin/message-gate
<!-- cwd=/Users/you/work/kotlin/message-gate -->
- - - - [[codex_e5f6a7b8-1111-2222-3333-444455556666]]
- 14:00 adjust the API response
- 14:30 run tests

Plain Mode

With --plain, entries go to {folder}/YYYY-MM-DD.md:

# 2026-03-02
- 10:53 start building agentlog

CLI Reference

Current CLI:

| Command | Description | |---------|-------------| | agentlog init [vault] [--plain] [--claude\|--codex\|--all] | Configure vault and install integrations. --claude (default): Claude hook, --codex: Codex hook, --all: both | | agentlog detect | List detected Obsidian vaults and CLI status | | agentlog codex-debug <prompt> | Run codex exec "<prompt>" with Codex hook auto-registered | | agentlog doctor | Run health checks for the binary, vault, Claude hook registration/format, and Obsidian CLI. Also checks Codex hook status if configured | | agentlog open | Open today's Daily Note in Obsidian (requires CLI 1.12.4+) | | agentlog version | Print AgentLog version. In dev builds, also shows channel and commit | | agentlog uninstall [-y] [--codex\|--all] | default: Remove Claude hook + config, --codex: Remove Codex hook and unregister/restore legacy ~/.codex/config.toml notify if AgentLog set it up, --all: Remove both | | agentlog hook | Invoked automatically by Claude Code or Codex (not for direct use) | | agentlog codex-notify | Legacy handler for older Codex notify installs |

Configuration

~/.agentlog/config.json:

| Field | Default | Description | |-------|---------|-------------| | vault | (required) | Path to the Obsidian vault or plain output folder | | plain | false | Plain mode that writes simple markdown files without Obsidian integration | | claudeHookInstalled | false | Records that AgentLog expects the Claude hook to be installed, so doctor does not downgrade a missing Claude hook in --all installs | | codexHookInstalled | false | Records that AgentLog expects the Codex hook to be installed, so doctor can detect partial damage | | codexNotifyRestore | unset | Legacy metadata for older Codex notify installs | | englishAsk | unset | Optional Codex prompt evaluator config. Disabled unless englishAsk.enabled is true |

Example EnglishAsk config:

{
  "englishAsk": {
    "enabled": true,
    "mode": "log-only",
    "threshold": 3,
    "timeoutMs": 8000
  }
}

When enabled, AgentLog evaluates English Codex user prompts with codex exec after writing the normal AgentLog entry. Results are appended to the same Daily Note under ## EnglishAsk. Evaluator failures and timeouts are ignored. Child evaluator runs set AGENTLOG_ENGLISHASK_EVAL=1 so AgentLog skips evaluator child notify turns.

Environment variables:

| Variable | Description | |----------|-------------| | AGENTLOG_CONFIG_DIR | Override the config directory (default: ~/.agentlog) | | AGENTLOG_ENGLISHASK_EVAL | Internal recursion guard for EnglishAsk evaluator runs | | AGENTLOG_PHASE | Force the runtime channel (dev or prod), overriding auto-detection | | OBSIDIAN_BIN | Override the Obsidian CLI binary path |

agentlog version은 현재 실행 중인 AgentLog의 build identity를 출력합니다.

  • prod: 헤드라인만 출력
AgentLog 0.1.1
  • dev: 개발 실행임을 나타내는 메타데이터를 추가 출력
AgentLog 0.1.1
channel: dev
commit: <short-sha>

기본 규칙은 git 메타데이터가 있는 checkout/link 실행이면 dev, 패키지 설치본이면 prod입니다. 테스트나 디버깅에서 channel을 고정하고 싶다면 AGENTLOG_PHASE=dev 또는 AGENTLOG_PHASE=prod를 사용할 수 있습니다.

Uninstall

Claude-only uninstall:

agentlog uninstall

This removes the hook from ~/.claude/settings.json and deletes ~/.agentlog/.

Codex-only uninstall:

agentlog uninstall --codex

This removes the Codex hook and also restores or removes AgentLog's legacy notify entry in ~/.codex/config.toml when present.

Or remove both integrations:

agentlog uninstall --all

Codex 상태 확인은 별도 명령 대신 기존 agentlog doctor에 포함됩니다.

Development

bun install
bun test              # run the test suite
bun run test:install-smoke
bun run typecheck     # run tsc --noEmit
bun run build         # compile to dist/ (optional)

The bin entry points directly to src/cli.ts, so you do not need a build during development. Bun runs TypeScript natively.

CLI command boundaries are documented in docs/architecture/cli-layering.md.

# Link as a global command
bun link

# Edit source and run immediately
agentlog doctor

# Isolated bun link install smoke test
bun run test:install-smoke

# Watch mode
bun run dev:watch

Roadmap

  • Phase 2: Obsidian plugin with timeline visualization UI
  • Phase 3: Git log integration (commits → Daily Note)
  • Future: agentlog run command for session replay from JSONL captures

License

MIT