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

@gianfrancopiana/openclaw-autoresearch

v1.0.11

Published

Faithful OpenClaw port of pi-autoresearch.

Readme

openclaw-autoresearch

Autonomous experiment loop for any optimization target.

Faithful OpenClaw port of davebcn87/pi-autoresearch, including upstream statistical confidence scoring.

How it works

The agent runs a loop: edit code, run a benchmark, measure the result, keep or discard. Each iteration is logged. The loop runs autonomously until interrupted.

Three tools drive the loop:

| Tool | What it does | |---|---| | init_experiment | Configures the session: name, primary metric, unit, direction (lower/higher). Once runs exist, starting a new segment requires reset: true, and the prior segment's best result is carried forward into checkpoint context. | | run_experiment | Executes a shell command, times it, captures stdout/stderr, parses METRIC name=number lines, and opens a pending experiment window that must be logged before another run can start. | | log_experiment | Records the pending run. The first logged run in a segment is tagged as the baseline automatically. keep auto-commits to git. discard/crash log without committing, and discard now requires an idea note that is appended to autoresearch.ideas.md. If the prior run_experiment captured the primary metric, log_experiment can infer commit and metric automatically. After 3+ runs in a segment, it also reports a confidence score for the best improvement versus noise. |

In OpenClaw sessions, the plugin uses the host-provided workspaceDir as the normal repo root. Each tool also accepts an optional cwd so callers can explicitly target a nested or non-session repo when needed.

All state lives in six repo-root files:

| File | Purpose | |---|---| | autoresearch.md | Session doc. The plugin keeps the Metrics, How to Run, What's Been Tried, and Plugin Checkpoint sections synchronized so resumes are less agent-dependent. | | autoresearch.sh | Benchmark script. Outputs METRIC name=number lines. | | autoresearch.jsonl | Structured log: config headers + experiment entries (metric, status, timestamp, segment, commit hash). | | autoresearch.ideas.md | Backlog of promising ideas not yet tried. Optional. | | autoresearch.checkpoint.json | Plugin-managed checkpoint: latest logged state, recent runs, and any pending unlogged run. | | autoresearch.lock | Session lock with PID + timestamp so another agent can detect an active or stale loop before forking a second session. |

The design is file-first: any agent can pick up the repo-root files and continue the loop without prior context.

Install

Requires OpenClaw 2026.4.25 or newer. Needs bash, git, and a git repo.

Use OpenClaw's plugin installer:

openclaw plugins install @gianfrancopiana/openclaw-autoresearch

If you're running from a local OpenClaw checkout, use:

pnpm openclaw plugins install @gianfrancopiana/openclaw-autoresearch

For local plugin development, link your working copy instead of copying files:

openclaw plugins install --link /absolute/path/to/openclaw-autoresearch
# or from a local OpenClaw checkout:
# pnpm openclaw plugins install --link /absolute/path/to/openclaw-autoresearch

For a packaged local install, build the tarball and install that artifact:

npm install
npm pack
openclaw plugins install ./gianfrancopiana-openclaw-autoresearch-<version>.tgz

The install command records the plugin, enables it, and makes it available after restart. OpenClaw reads the package metadata, loads the compiled runtime entry dist/index.js, and finds the manifest in openclaw.plugin.json.

Verify:

  • skill: autoresearch-create
  • tools: init_experiment, run_experiment, log_experiment, autoresearch_status
  • command: /autoresearch (recommended)
  • direct skill fallback: /skill autoresearch-create

Prefer the explicit /autoresearch command surface in OpenClaw. The auto-generated native skill alias /autoresearch_create may not trigger reliably on some hosts, so use /skill autoresearch-create if you need to invoke the skill directly.

Workflow Guarantees

  • run_experiment refuses to start a second run until the previous one is logged.
  • run_experiment parses METRIC name=number lines and stores a pending run so log_experiment can default from the actual benchmark output.
  • init_experiment refuses to reset a live history unless reset: true is passed explicitly.
  • The first log_experiment in a segment is tagged as the baseline automatically, even if it is later discarded.
  • discard logs must include an idea note, and that note is appended to autoresearch.ideas.md.
  • During active autoresearch mode, raw benchmark execution through OpenClaw exec/bash is blocked. Use run_experiment instead.
  • autoresearch_status warns when a pending run is unlogged, when the canonical branch has drifted, when a stale/live lock exists, or when git history has moved ahead of the last logged experiment. On autoresearch/* branches it explicitly warns not to push unlogged commits.
  • After 3+ positive-metric runs in a segment, log_experiment, autoresearch_status, and the synced session doc report a MAD-based confidence score so the agent can distinguish likely wins from noise.
  • The plugin updates autoresearch.checkpoint.json, autoresearch.lock, and the plugin-managed sections in autoresearch.md after init, run, and log transitions.

Use

In the repo you want to optimize:

  1. Load the plugin.
  2. Run /autoresearch or /autoresearch setup <goal>.
  3. Send a normal message with the goal, command, metric (+ direction), files in scope, and constraints.
  4. If you need the raw skill invocation, use /skill autoresearch-create.
  5. The agent writes autoresearch.md and autoresearch.sh, captures or reuses the canonical autoresearch/* branch, runs a baseline with run_experiment, then records it with log_experiment.
  6. Use /autoresearch or /autoresearch status to re-prime context on a later turn.

To resume an existing session, a new agent reads the repo-root files and continues from where the last one stopped.

User steers

Messages sent while an experiment is running are queued and surfaced after the next log_experiment. The agent finishes the current experiment before incorporating the steer.

Ideas backlog

When the agent discovers promising but complex ideas mid-loop, it appends them to autoresearch.ideas.md. Discarded experiments now require an idea note, so failed paths leave behind concrete follow-up suggestions instead of disappearing. On resume, the agent reads the backlog, prunes stale entries, and uses the remaining ideas as experiment paths.

Upstream reference

This port preserves upstream semantics, names, and file contracts while adapting presentation to OpenClaw. There is no Pi-style widget, dashboard, or editor shortcut layer. Remaining differences are tracked in docs/non-parity.md.

  • upstream repo: https://github.com/davebcn87/pi-autoresearch
  • pinned upstream commit: 2227029fa5712944a36938b5fe59f709cb30ed22 (2227029f)
  • later upstream parity cherry-pick: confidence scoring from cf1bbf03debca8f3fb2cca2c3e799b9e23320f87 (cf1bbf0, March 19, 2026)

Validation

npm install --include=dev
npm run check:release-metadata
npm run typecheck
npm test
npm run validate
npm run release:verify
npm run smoke:openclaw-host -- /absolute/path/to/openclaw
npm run smoke:registry-openclaw-host -- <published-version> /absolute/path/to/openclaw

Release instructions, including npm run release:prepare -- <version> --host /absolute/path/to/openclaw and GitHub Actions trusted publishing with npm provenance, live in RELEASING.md.

The local test shim supports typechecking and tests without a full OpenClaw host checkout. Runtime behavior depends on a real OpenClaw host, so run the host smoke against a current checkout before release.

License

MIT