Skip to main content

pacto

Archive an idle project folder into a single zip that lives inside it, so the folder stays visible as a marker of what used to be there.

C:\dev\old-project\        ->   C:\dev\old-project\
  src/ node_modules/ ...          old-project.zip

pacto unzip old-project puts it all back and deletes the zip.

Nothing is deleted until the archive has been verified: every entry is CRC-checked and the file count and total size are compared against the folder. If a locked file interrupts the delete, re-running pacto zip finds the good archive and finishes the job instead of re-zipping.

Install

pip install "pacto[all]"                 # CLI, interactive picker, MCP server
pip install pacto                        # core only, no picker and no MCP
pipx install "pacto[all]"                # or uv tool install, to keep it off your global env

From a checkout:

pip install -e ".[all]"

Use

pacto                      # interactive picker, ranked by best candidate
pacto scan                 # list folders: size, idle days, git state
pacto scan --min-size 500MB --idle 60d
pacto zip old-project      # archive it, then delete the contents
pacto unzip old-project    # restore in place

Where it works:

  • the current directory when it is inside the default root (C:\dev)
  • otherwise the default root itself
  • --root D:\projects overrides both, and PACTO_ROOT changes the default

Only the direct children of that folder are candidates.

scan ranks by size × idle days, so a big folder untouched for a year comes before a big one you edited yesterday. Idle time is the newest file anywhere in the tree.

Safety

  • The archive is verified before anything is deleted.
  • Git repos with uncommitted or unpushed work are flagged, then archived anyway. .git goes into the zip, so history survives.
  • Symlinks and Windows junctions are skipped, not followed, and are listed in the output.
  • unzip refuses to run when the folder holds anything besides the archive, and rejects entries whose paths point outside it.
  • Empty directories are preserved through the round trip.
  • pacto never archives its own checkout.

MCP server

claude mcp add pacto -- pacto-mcp

Or in claude_desktop_config.json:

{ "mcpServers": { "pacto": { "command": "pacto-mcp" } } }

Tools: scan, suggest, zip, unzip. zip is gated: without confirm=true it only reports what would happen, so an agent cannot delete a project by accident.

Notes for synced folders

If the root is inside Dropbox, OneDrive or Syncthing, archiving deletes the files on every synced machine and then copies the zip to all of them. That is the intent, but it is a big transfer. For Syncthing, add (?d)*.zip.partial to .stignore on each machine so a half-written archive never syncs.

Tests

python tests/test_core.py

MIT licensed.

Metadata

Release files for pacto 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pacto 0.1.1
File Size Uploaded
pacto-0.1.1.tar.gz 11.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pacto 0.1.1
File Interpreter ABI Platform
pacto-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 23.4 kB

Release files / pacto-0.1.1.tar.gz

Download URL pacto-0.1.1.tar.gz
Size 11.8 kB
Tags Source
SHA-256 checksum
How to use checksums
57c39551c85144128f3e5b998d9da9f5b845aeff9c3ee58d9aea5311c07abe69
BLAKE2b-256 checksum
How to use checksums
3b9209b215cc85d636a4c6928ed407ebd866300847b23767bd498785cafdfc9e
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 18, 2026.

Transparency log

Release files / pacto-0.1.1-py3-none-any.whl

Download URL pacto-0.1.1-py3-none-any.whl
Size 11.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c04b3dac33d0a711a2b549c1a44f62779e078f11ded865863a6424abeb08855e
BLAKE2b-256 checksum
How to use checksums
28dede9ae4f63d86da13699faa9d0445b63504213aa2edbff51f088418fdcfc3
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 18, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page