Un-park your side projects with an instant re-entry briefing, runnable recipes, and a local demo launcher
Project description
unpark
Un-park your side projects. When you return after three months,
unpark tells you what the project is, where you stopped, and the one command
that shows it running.
unpark is the primary command. wb is an optional shorthand for “welcome
back”; both run the same program.
$ unpark
photo-globe — Photos on a spinning 3D globe, placed by EXIF geolocation
parked · last commit 8 days ago · WELCOME.md updated 40 days ago
GOALS 2/3 done
RECIPES
demo Serve the generated globe page background · :8765
⚠ WELCOME.md may be stale: 1 commit since updated
Each project commits one human-readable, GitHub-rendered WELCOME.md.
Coding agents can keep it fresh through an installable upkeep skill, but the
tool itself is local, deterministic, and makes no LLM or network calls.
- Terminal briefing with live git context
- Interactive localhost dashboard with recipe start/stop controls
- A curated handful of re-entry recipes that delegate to your task runner
- Managed demo processes with
ps,logs, andstop - Optional portfolio and VS Code workspace hand-off
- Python 3.9+ with no runtime dependencies
Try it without changing a project
Install the published package:
uv tool install unpark # or: pipx install unpark
unpark demo
From a clone, use uv tool install . when developing it.
The demo is a self-contained, disposable trial: it prints a generated briefing
with relative-dated git history, then deletes its files. Use unpark demo --html to explicitly open that temporary demo's dashboard, or use unpark demo ./photo-globe-demo to keep the sample for inspection.
This is the dashboard opened by unpark demo --html:
For daily use, run unpark html inside a real project repository. It reads
that repository's own WELCOME.md and serves its local dashboard. From a
directory containing several real projects, the same command instead provides
a compact portfolio with their status, stale-briefing warnings, goals, and next
command:
In a terminal, unpark projects pages your registered-project overview. Use
unpark projects --pick to choose one before its briefing opens, or
unpark project NAME when you already know which project you want.
Use it in a real project
cd your-project
unpark init # create a manual skeleton
unpark # terminal briefing
unpark html # interactive dashboard
unpark manual # full context-aware manual
Long interactive briefings automatically use $PAGER (default less), while
piped output remains plain. Use --no-pager or set NO_PAGER to disable it.
Or install the upkeep skill once and ask your coding agent, “Set up unpark for this project”:
unpark skill --install --global --target claude
Choose the global integration deliberately: repeat --target for more than
one, or use --target all for every file-based integration that unpark knows
how to install (claude, codex, and copilot). Cursor's global User Rules
are configured in its settings, so unpark leaves them under your control; its
project-level AGENTS.md support is covered by unpark skill --install.
A minimal briefing looks like this:
---
name: my-project
tagline: What it does, in one line
status: active
updated: 2026-07-15
---
## What is this
Who it is for and what exists.
## State of things
The latest useful hand-off.
Known issues:
- None known.
Next step: ship the first release.
## Recipes
### demo
```sh
just demo
```
Plays well with task runners
just, task, mask, mise, make, and npm keep owning the full task
catalog. Unpark owns the re-entry moment. Its recipes should delegate—such as
just demo—instead of copying task bodies into WELCOME.md.
Trust model
Recipes are executable project code, like a Makefile. Review WELCOME.md
before running recipes from an untrusted clone. The dashboard binds only to
localhost and protects actions with a per-session token and Host-header check;
see SECURITY.md for details.
Status and license
Published on PyPI. MIT © Jörg Türmer (Joerg Tuermer).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file unpark-0.2.2.tar.gz.
File metadata
- Download URL: unpark-0.2.2.tar.gz
- Upload date:
- Size: 338.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
384d1c66303bf54199ef30a5ed7c9c9afde5a06a60e64984b04de5e55c3bbb25
|
|
| MD5 |
850582b4142ac3d1fb390c0810ff27ab
|
|
| BLAKE2b-256 |
0fc6a0f3c69db2dd90547cef6b05549440dab7a37affc385f00d8db083bf3989
|
Provenance
The following attestation bundles were made for unpark-0.2.2.tar.gz:
Publisher:
release.yml on Tauris/unpark
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
unpark-0.2.2.tar.gz -
Subject digest:
384d1c66303bf54199ef30a5ed7c9c9afde5a06a60e64984b04de5e55c3bbb25 - Sigstore transparency entry: 2178143363
- Sigstore integration time:
-
Permalink:
Tauris/unpark@f902b2c81c817012c47e9166a7a172bd6721c708 -
Branch / Tag:
refs/tags/v0.2.2 - Owner: https://github.com/Tauris
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@f902b2c81c817012c47e9166a7a172bd6721c708 -
Trigger Event:
push
-
Statement type:
File details
Details for the file unpark-0.2.2-py3-none-any.whl.
File metadata
- Download URL: unpark-0.2.2-py3-none-any.whl
- Upload date:
- Size: 56.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
02814dec0a1979ce0e1e3d7ecbbbc9334d01a5a88143ff97c8fbe9714f759154
|
|
| MD5 |
5e54ea7435619b8c6deeff9708261e1f
|
|
| BLAKE2b-256 |
d54e5a3b01c2d03cf88eea66f8a2fc52b20b1fb85f56549bde8ced1312a94320
|
Provenance
The following attestation bundles were made for unpark-0.2.2-py3-none-any.whl:
Publisher:
release.yml on Tauris/unpark
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
unpark-0.2.2-py3-none-any.whl -
Subject digest:
02814dec0a1979ce0e1e3d7ecbbbc9334d01a5a88143ff97c8fbe9714f759154 - Sigstore transparency entry: 2178143412
- Sigstore integration time:
-
Permalink:
Tauris/unpark@f902b2c81c817012c47e9166a7a172bd6721c708 -
Branch / Tag:
refs/tags/v0.2.2 - Owner: https://github.com/Tauris
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@f902b2c81c817012c47e9166a7a172bd6721c708 -
Trigger Event:
push
-
Statement type: