vardoger
A cross-platform plugin for AI coding assistants (Cursor, Claude Code, OpenAI Codex, OpenClaw, GitHub Copilot CLI, Devin Local, legacy Windsurf, and Cline) that reads supported local conversation-history formats, extracts behavioral patterns, and generates personalized system prompt additions — making the assistant progressively better suited to how you work. Current format limitations are called out per platform below rather than silently reading undocumented stores.
History discovery, parsing, checkpoints, and generated rules stay on your machine. Analysis is performed by the host assistant you invoke, so selected conversation excerpts follow that assistant and model provider's data policy. Vardoger operates no backend and sends no telemetry.
Prerequisites
Python 3.11+
| Platform | Command |
|---|---|
| macOS | brew install python@3.13 (install Homebrew) or python.org/downloads/macos |
| Debian / Ubuntu | sudo apt install python3 |
| Fedora | sudo dnf install python3 |
| Windows | winget install Python.Python.3.13 or python.org/downloads/windows |
pipx
Recommended for installing vardoger as an isolated CLI tool. Full instructions at pipx.pypa.io/stable/installation.
| Platform | Command |
|---|---|
| macOS | brew install pipx && pipx ensurepath |
| Debian / Ubuntu | sudo apt install pipx && pipx ensurepath |
| Fedora | sudo dnf install pipx && pipx ensurepath |
| Windows | scoop install pipx or pip install --user pipx && pipx ensurepath |
Quick Start
pipx install vardoger
vardoger setup cursor # or claude-code, codex, openclaw, copilot, devin, windsurf, cline
Then tell your assistant: "Personalize my assistant."
Looking for the in-app plugin listings? Track review status for each marketplace (PyPI, Cursor, Claude Code, Codex, Copilot CLI, Devin Desktop, Cline, ClawHub) in
MARKETPLACE_STATUS.md. Vardoger is currently live on PyPI, the Claude Code community catalog, self-hosted Codex and Copilot marketplaces, McpMux, and the Official MCP Registry. The former Cursor listing is currently unavailable. ClawHub has regressed to 0.3.1. Current OpenClaw history now has an opt-in, full-read Gateway CLI path, but that path still requires clean-profile acceptance before any ClawHub republish.
Previous pre-releases.
pipx install vardogernow resolves to the stable0.3.2release. The beta install paths below stay here for anyone still pinning an earlier release; new installs should not need them.# opt into future pre-releases (0.2.0bN, etc.): pipx install --pip-args="--pre" vardoger # or pin an older pre-release: pipx install vardoger==0.1.0b3 # or run without installing: uvx vardoger --help
CLI Commands
| Command | Purpose |
|---|---|
vardoger setup <platform> |
Register vardoger with a platform (cursor, claude-code, codex, openclaw, copilot, devin, windsurf, cline). |
vardoger status [--platform X] [--json] |
Report whether each personalization is fresh or stale. |
vardoger prepare --platform X [--batch N] [--synthesize] |
Produce the batched prompts used by the AI-driven skill pipeline. |
vardoger write --platform X |
Read synthesized personalization from stdin and write it to the platform's rules file (supports YAML-frontmatter confidence metadata). |
vardoger feedback accept|reject --platform X [--reason TEXT] |
Record whether you kept or rejected the last generation. reject auto-reverts to the prior generation. |
vardoger compare --platform X | --all [--window DAYS] [--json] |
Compare heuristic conversation-quality metrics before vs. after the latest personalization. |
vardoger profile sources [--platform X] [--json] |
List saved generations and their stable one-based selection IDs. |
vardoger profile preview --source X:N [--source Y:latest] |
Compile explicitly selected generations into a normalized cross-host profile and show the portable AGENTS.md diff without writing. |
vardoger profile write --source X:N --target ./AGENTS.md [--apply] |
Show the same diff; update only Vardoger's fenced block when the user explicitly adds --apply. |
How It Works
- Read — Parses supported conversation files already stored on disk, including opted-in Devin ATIF exports
- Analyze — The host AI model identifies patterns in your communication style, tech stack, workflow, and preferences
- Generate — Produces a system prompt addition tailored to you
- Deliver — Writes the addition to the platform's native config (
.cursor/rules/,.claude/rules/,AGENTS.md, etc.)
First run vs. incremental runs. By default vardoger does not apply a time window — the first run reads your full local history (that is when the signal is richest and a windowed default would silently drop older sessions you never get a second chance to feed in). After that, a per-conversation checkpoint store at
~/.vardoger/state.jsonensures every subsequent run only reprocesses new or changed conversations, so refreshes stay fast. If you have very large local history and want to cap the first-run cost, pass--since DAYS(e.g.vardoger prepare --platform cursor --since 90); use--fullto force a full re-crawl that bypasses the checkpoint.
Cross-host profile compiler
The profile compiler combines only existing Vardoger generations that you
select; it does not silently reopen raw transcripts. Generation indexes are
one-based, while latest resolves to the newest saved generation for that
platform:
# Discover the reviewed generations available for selection.
vardoger profile sources
# Read-only: render the profile, audit summary, and exact AGENTS.md diff.
vardoger profile preview \
--source claude-code:latest \
--source codex:2 \
--target ./AGENTS.md
# Optional controls are applied before rendering and included in the audit.
vardoger profile preview \
--source codex:latest \
--min-confidence medium \
--max-age 180 \
--redact '@example\.com' \
--target ./AGENTS.md
# Still preview-only without --apply. This is the explicit write step.
vardoger profile write \
--source claude-code:latest \
--source codex:2 \
--target ./AGENTS.md \
--apply
The normalized JSON audit is available with profile preview --json. It
records source platform, generation, output hash/path, observation time,
recency, confidence, conflicts, supersession, and exclusions. Opposing rules
such as “Prefer tabs” and “Avoid tabs” are withheld from active instructions
until reviewed. Writes preserve everything outside
<!-- vardoger-profile:start --> and <!-- vardoger-profile:end -->.
Supported Platforms
| Platform | History Source | Prompt Delivery | Integration |
|---|---|---|---|
| Cursor | Agent transcript JSONL | .cursor/rules/vardoger.mdc |
Marketplace plugin + MCP |
| Claude Code | Session JSONL | .claude/rules/vardoger.md |
Community/custom plugin |
| OpenAI Codex | Session rollout JSONL | ~/.codex/AGENTS.md |
Repository marketplace plugin |
| OpenClaw | Legacy JSONL or opt-in full read through official Gateway CLI; private SQLite is never queried | ~/.openclaw/skills/vardoger-personalization/SKILL.md |
Analyzer + Gateway compatibility status |
| GitHub Copilot CLI | ~/.copilot/session-state/<session-id>/events.jsonl plus legacy flat JSONL |
~/.copilot/copilot-instructions.md (global) or <project>/.github/copilot-instructions.md (project) — managed inside a <!-- vardoger:start --> fenced section |
Custom plugin + published skill |
| Devin Local | User-enabled Devin CLI --export ATIF JSON under ~/.vardoger/imports/devin/ |
~/.config/devin/AGENTS.md (global, fenced section) or <project>/.devin/rules/vardoger.md |
ATIF + skill + rules integration |
| Legacy Windsurf / Cascade | ~/.codeium/windsurf/**/*.jsonl |
~/.codeium/windsurf/memories/global_rules.md (global, fenced section) or <project>/.windsurf/rules/vardoger.md (project, dedicated file) |
Legacy Cascade skill + CLI + MCP |
| Cline | VS Code globalStorage/.../tasks/*/api_conversation_history.json |
~/Documents/Cline/Rules/vardoger.md (global) or the existing .clinerules project layouts |
CLI + MCP |
Development
Requires uv (Python package manager):
git clone https://github.com/dstrupl/vardoger.git
cd vardoger
uv sync
.venv/bin/vardoger --help
Project Layout
src/vardoger/ # shared core — history reading, analysis, prompt generation
.agents/plugins/ # repository-level Codex marketplace catalog
plugins/_shared/ # shared analysis/personalization skill authored once
plugins/cursor/ # Cursor MCP server config, install script
plugins/claude-code/ # Claude Code plugin manifest, skills
plugins/codex/ # Codex plugin manifest, skills
plugins/openclaw/ # OpenClaw skill
plugins/copilot/ # GitHub Copilot CLI plugin manifest, skills
plugins/devin/ # Devin Local ATIF export, skill, and rules integration
plugins/windsurf/ # Legacy Cascade install snippet and rules delivery
plugins/cline/ # Cline integration and marketplace install guidance
tests/ # all tests, mirroring src/ structure
- Platform-agnostic logic lives under
src/vardoger/. - Platform-specific integration (manifests, skills, install scripts) lives under
plugins/<platform>/. - Tests live in
tests/, mirroring the source tree.
See AGENTS.md for full coding standards and quality checks.
Quality gates
CI enforces a combined quality bar on every push and pull request:
ruff check/ruff format --check— lint (incl. complexity, pylint, return, pathlib, tryceratops rules) and formatting.mypy src/— strict type checking.pytest --cov=vardoger --cov-fail-under=80— tests across Python 3.11–3.13 with a combined 80% coverage floor.- A parallel security job runs
bandit -r src/andpip-audit --skip-editableto catch common code smells and dependency CVEs.
Run the full bundle locally before pushing:
uv run ruff check . && uv run ruff format --check . && uv run mypy src/ && uv run pytest --cov=vardoger --cov-fail-under=80
Contributing
Contributions are welcome. Short version:
- Fork
dstrupl/vardogeron GitHub and clone your fork. uv syncand create a topic branch.- Make your changes with tests and run the quality-gate one-liner above.
- Push to your fork and open a PR against
main.
CI (test on Python 3.11/3.12/3.13 plus a security job) will run automatically on the PR. First-time contributors may need a maintainer to click Approve and run before the first workflow execution.
See CONTRIBUTING.md for the full walkthrough and AGENTS.md for coding standards and commit-message conventions.
Releasing to PyPI
CI runs automatically on every push and PR (lint, type check, tests across Python 3.11–3.13). To publish a new version:
- Bump the package, generated setup manifests, platform manifests, and registry
metadata together; close the matching section in
CHANGELOG.md. - Run the complete quality, security, plugin-validation, and build checks.
- Commit and push to
main, then wait for all required checks. - Create an annotated
vX.Y.Ztag and publish the matching GitHub release.
The publish.yml workflow builds the package and uploads it to PyPI via trusted publishers (no API tokens needed). Once complete, pipx install vardoger will pull the new version.
Status
Public beta. Version 0.3.2 remains the published PyPI release; this source
tree is the locally validated 0.4.0 release candidate pending owner review,
CI, tagging, and publication.
See MARKETPLACE_STATUS.md for live listings and
the remaining official-directory submissions.
See MANUAL_SUBMISSION_RUNBOOK.md for the
owner-only submission, review, and publication steps.
See PRD.md for the full product requirements document.
Privacy and security
- PRIVACY.md — what vardoger reads, writes, and (importantly) does not send anywhere.
- SECURITY.md — how to report a vulnerability privately.
License
Licensed under the Apache License, Version 2.0. See also the public Privacy Policy and Terms of Use.
Metadata
Release files for vardoger 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| vardoger-0.4.0.tar.gz | 313.9 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| vardoger-0.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 416.6 kB
Release files / vardoger-0.4.0.tar.gz
| Download URL | vardoger-0.4.0.tar.gz |
|---|---|
| Size | 313.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ad3ddd536ae440c684ab35e363e6c7dbb6e43df6785b26136191716a32e199db
|
|
BLAKE2b-256 checksum How to use checksums |
e90ab0db5f329602ed60c639a08d7b61675b11d8bdf5c3646b1403af2519674e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.
Transparency logRelease files / vardoger-0.4.0-py3-none-any.whl
| Download URL | vardoger-0.4.0-py3-none-any.whl |
|---|---|
| Size | 102.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a364b910790dfad55f62efa811581ed0b8e668952bcd6a7c50d67bd709926021
|
|
BLAKE2b-256 checksum How to use checksums |
427b6646a3920bb28ef6533cc11373cb592a1d631df4adc3a8d9e224e2be204a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.
Transparency logSecurity for vardoger 0.4.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for vardoger-0.4.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.