More Updates
- paper is now paperctl — and installs no longer need sudoJul 23, 2026
- See models in session tableJul 23, 2026
- Every session shows its outcomesJul 17, 2026
- paperctl sessions in the CLIJul 14, 2026
- Export your session dataJul 11, 2026
- Delete sessions from the consoleJul 10, 2026
- Insights dashboard for spend and session healthJun 30, 2026
- Turn dead tokens into skillsJun 26, 2026
- paper now works with CodexJun 23, 2026
- Richer session detailsJun 16, 2026
- Changelog goes liveJun 10, 2026
- paperctl CLI is now in alphaJun 09, 2026
paper is now paperctl — and installs no longer need sudo
v0.21.0 renames the CLI binary from paper to paperctl, moves installs to a user-owned directory with no sudo anywhere, and adds paperctl upgrade so you never run the curl ritual again.
v0.21.0 is a breaking release: the CLI binary is renamed from paper to
paperctl. This is a hard cut — no compat symlink, no dual-publish — so
scripts and aliases that call paper need to say paperctl after you
update.
The rename sharpens the vocabulary: paper is the product, paperctl
operates on your machine, and paperd is the running daemon. It also
clears a real collision — libpaper ships a /usr/bin/paper on many Linux
distros, and that shadow is now gone for good.
To move, re-run the installer:
curl -fsSL https://download.papercompute.com/install | sh
What didn’t change: PAPER_* environment variables, ~/.config/paper/,
the paperd daemon name, and the launchd/systemd service labels. Your
credentials and daemon config survive the migration byte-for-byte.
If something you can’t immediately update — a script, a CI job, a coding
agent’s saved instructions — is blocked because it still calls paper, an
alias bridges the gap:
alias paper=paperctl
Or, for callers that don’t go through your shell, a symlink:
ln -s ~/.local/bin/paperctl ~/.local/bin/paper
Treat it as a bridge, not a destination: it re-creates the name collision
the rename removed, so drop it once the caller says paperctl.
Rootless installs
The install location moves to ~/.local/bin, and with it the last routine
sudo leaves the product. A fresh install is ordinary user file I/O end to
end — download, symlink, and a guarded PATH export written into the same
managed shell-rc block the shell integration already uses. Re-installs
rewrite the block instead of stacking duplicates, and paperctl uninstall
removes the binaries and the block without a trace.
If you installed before v0.21.0, the old binaries in /usr/local/bin are
root-owned, so the installer asks for sudo one final time to remove them —
and says so plainly. Declining is fine: the new install still lands, and the
manual removal command is printed. If anything is off afterward,
paperctl doctor now names the two degraded states — install directory
missing from PATH, or a stale binary shadowing the new one — and prints
the exact command to fix each.
paperctl upgrade
Staying current is one command now:
paperctl upgrade
It checks the published version, reports “already up to date” when there’s
nothing to do, and otherwise swaps the binary in place — downloaded and
checksum-verified before it’s trusted, crash-safe at every step — then
restarts the daemon and prints old → new. --version pins an exact release
(older included, as an escape hatch), and --version nightly always
fetches.
Read the quickstart to get set up, or the CLI reference for the full command surface.