Autonomous experiment loop for Cursor: try an idea, measure it, keep what works, discard what does not, and continue iterating.
This plugin ports the original pi-autoresearch workflow to Cursor plugins:
- MCP tools:
init_experiment,run_experiment,log_experiment - Skills:
autoresearch-create,autoresearch-finalize - Command:
/autoresearch - Live dashboard:
http://127.0.0.1:7331(served by the MCP server)
.
├── .cursor-plugin/plugin.json
├── commands/autoresearch.md
├── skills/
│ ├── autoresearch-create/SKILL.md
│ └── autoresearch-finalize/
│ ├── SKILL.md
│ └── finalize.sh
├── rules/autoresearch-guardrails.mdc
├── mcp.json
├── src/server.ts
├── dist/server.js
└── dashboard/
├── src/...
└── dist/...
| Tool | Purpose |
|---|---|
init_experiment |
Initialize or re-initialize a segment with metric metadata |
run_experiment |
Execute benchmark command, parse METRIC lines, run optional checks |
log_experiment |
Persist run to autoresearch.jsonl, auto-commit keep, auto-revert discard/crash/checks_failed |
autoresearch persists progress in the active work directory:
autoresearch.jsonl- append-only run historyautoresearch.md- high-level objective and experiment memoryautoresearch.sh- benchmark script with structured metric outputautoresearch.checks.sh- optional correctness checksautoresearch.ideas.md- optional backlog of deferred ideasautoresearch.config.json- optional config (maxIterations,workingDir)
The MCP server also hosts a local web dashboard on 127.0.0.1:7331.
GET /api/statereturns current parsed stateGET /api/streamprovides SSE updates- React dashboard UI is served from
dashboard/dist
Use:
/autoresearch optimize unit test runtime while preserving correctness
The command resumes from autoresearch.md if present, or routes to the setup skill for new sessions.
/autoresearch off
Stops active loop behavior without deleting files.
/autoresearch clear
Deletes autoresearch.jsonl from effective workDir.
/skill:autoresearch-finalize
Groups kept experiments and runs skills/autoresearch-finalize/finalize.sh to create independent review branches.
npm installnpm run buildThis regenerates:
dist/server.jsdashboard/dist/*
npm run test:finalizeUse a local plugin symlink:
ln -s /path/to/cursor-autoresearch ~/.cursor/plugins/local/cursor-autoresearchThen reload Cursor window.
- Dashboard is local-only (
127.0.0.1:7331) - Fixed dashboard port:
7331 - No Cursor hooks are used for auto-resume; loop continuity is enforced by command/skill instructions
MIT