---
slug: "8monkey-pi-session-gzip"
source_type: "readme"
source_url: "https://raw.githubusercontent.com/8monkey-ai/pi-session-gzip/main/README.md"
repo: "https://github.com/8monkey-ai/pi-session-gzip"
source_file: "README.md"
branch: "main"
---
# pi-session-gzip

Gzip Pi session files at rest. When a session closes it's compressed to a `.jsonl.gz` file and the plain file is removed; `/resume-compressed` restores and reopens it on demand. Plain JSONL stays Pi's working format — nothing changes during a live session.

Built for anyone whose `~/.pi/agent/sessions/` has grown large and wants closed sessions to sit compressed without losing the ability to reopen them.

## How it works

- **Compress on shutdown.** Quitting Pi compresses the closed session's `session.jsonl` to `session.jsonl.gz` and removes the plain file.
- **Restore on demand.** Run `/resume-compressed` to decompress and reopen the current session's `.gz` (falling back to this project's newest compressed session). Pass an id or path to restore a specific one.

Zero runtime dependencies. Pi loads the TypeScript directly, so there's no build step. Runs under Node or Bun.

## Install

```bash
pi install npm:@8monkey/pi-session-gzip
```

## Command

| Command | Description |
|---|---|
| `/resume-compressed [id\|path]` | Restore a compressed session and reopen it. With no argument, restores the current session's `.gz`, or this project's newest compressed session if there is none. Accepts a session id (exact or prefix) or a file path. |

## Behaviour notes

- Compresses on quit only; live sessions, reloads, and switches are left untouched.
- Restoring is safe to repeat — running compress or restore twice is a no-op.
- Ephemeral (`--no-session`) and empty sessions are skipped.
- The `.gz` replaces the original at the same path (`session.jsonl` → `session.jsonl.gz`); the sessions layout is never reorganized.

## Development

```bash
node --test
```

## License

MIT
