Skip to main content

Local project memory and correction learning for Python workflows

Project description

PyRecall

CI PyPI

Local project memory and correction learning for Python workflows.

PyRecall demo: init, learn a correction, recall the skill

PyRecall keeps durable notes about your repository, turns corrections into reusable skills, and serves them back through a CLI or a stdio tool bridge that compatible coding tools can call.

No cloud account. No network calls for recall. Everything stays in .pyrecall/ inside your project.

Replay the same session locally:

# Unix
bash examples/demo.sh

# Windows PowerShell
./examples/demo.ps1

Why

Coding tools forget project preferences between sessions. You correct the same mistake twice. PyRecall records the correction once and surfaces it the next time the same topic comes up — especially for Python testing, typing, packaging, and style conventions.

Install

pip install pyrecall-cli

This installs the pyrecall command and the pyrecall Python package.

If pyrecall is not found on Windows after install:

python -m pyrecall doctor
python -m pyrecall --help

Or add your user Scripts folder to PATH, then open a new terminal.

For local development:

pip install -e ".[dev]"

Requires Python 3.10+.

Quick start

cd your-python-project
pyrecall init
pyrecall index
pyrecall remember "API errors" "Raise domain exceptions from services; map to HTTP in the API layer only."
pyrecall learn --rejected "unittest.TestCase" --preferred "pytest assert + fixtures" --reason "Repo standard"
pyrecall recall "how should tests be written"

Free-form corrections

pyrecall learn --blob "os.path.join => Path / 'name'"
pyrecall learn --blob "avoid: bare except | prefer: except ValueError as exc"

Commands

Command Purpose
pyrecall init Create .pyrecall/ and seed Python defaults
pyrecall index Index docs and Python module signals
pyrecall remember Store a decision / convention / note
pyrecall learn Distill a correction into a skill
pyrecall recall Search memories and skills
pyrecall skills List learned skills
pyrecall forget Deactivate a skill
pyrecall doctor Check PATH / store health
pyrecall playbook Write SKILLS.md from active skills
pyrecall stats Show store counts
pyrecall export / import-data Backup and restore JSON
pyrecall serve Run the stdio tool bridge

Stdio tool bridge

Compatible coding tools that speak JSON-RPC over stdio can attach PyRecall as a local tool server.

Full guide: docs/BRIDGE.md

Quick connect

pip install pyrecall-cli
cd your-python-project
pyrecall init
pyrecall serve

Add this to your host tool config (restart the host afterward):

{
  "pyrecall": {
    "command": "pyrecall",
    "args": ["serve"],
    "cwd": "/absolute/path/to/your/python-project"
  }
}

Windows / PATH-safe variant:

{
  "pyrecall": {
    "command": "python",
    "args": ["-m", "pyrecall", "serve"],
    "cwd": "C:/Users/you/projects/myapp"
  }
}

Ready-made files: bridge.client.json · bridge.mcp.json · bridge.windows.json

Tools exposed

Tool Purpose
get_context Paste-ready conventions + skills for a task
search_memory Ranked search over memories and skills
learn_correction Turn “don’t do X, do Y” into a durable skill
add_memory Store a decision / convention / note
list_skills List active skills
project_stats Store counts

How learning works

  1. You provide a rejected approach and a preferred approach.
  2. PyRecall stores the correction and distills a named skill.
  3. Later recall / get_context ranks that skill into the result set with BM25 + overlap scoring.
  4. Skill hit counts increase when they are retrieved, so useful rules rise over time.

All ranking is local. There are no model downloads and no external APIs.

Storage layout

.pyrecall/
  config.json
  store.db
  index/

Add .pyrecall/store.db to .gitignore if you do not want binary state in git. Export JSON when you want a reviewable backup.

Python defaults

pyrecall init seeds practical skills such as:

  • prefer pytest over unittest
  • type-hint public APIs
  • pathlib over os.path
  • context managers for I/O
  • no bare except:
  • pyproject-first configuration

Development

pip install -e ".[dev]"
pytest
ruff check src tests

See CHANGELOG.md for release history, docs/LAUNCH.md for the public launch checklist, and docs/SPONSORS.md for funding setup.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyrecall_cli-0.2.0.tar.gz (1.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyrecall_cli-0.2.0-py3-none-any.whl (26.2 kB view details)

Uploaded Python 3

File details

Details for the file pyrecall_cli-0.2.0.tar.gz.

File metadata

  • Download URL: pyrecall_cli-0.2.0.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyrecall_cli-0.2.0.tar.gz
Algorithm Hash digest
SHA256 16b7467fff99911d521d47b6bd0b19710552a03c46cb3828866687664c312bd2
MD5 c56331c5a5be8c15b73d02c2ee204fae
BLAKE2b-256 ec471898121467a2576e7c236976cdf4483da75f9c2573f7a4438a5d2320fc38

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrecall_cli-0.2.0.tar.gz:

Publisher: publish.yml on mjpt1/pyrecall

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyrecall_cli-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: pyrecall_cli-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 26.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyrecall_cli-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fade92ec3db1eed95167007b51754bb52d52cc544e96978b746c9cbe6627ba6a
MD5 fa5eb689aafdaa5ad324fc9f6d38d68a
BLAKE2b-256 567c3126f877ae0efad9ab809408764d61450a587e33f6c45d7b9d3d640f0a86

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrecall_cli-0.2.0-py3-none-any.whl:

Publisher: publish.yml on mjpt1/pyrecall

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page