Skip to main content

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, and stop
  • Optional portfolio and VS Code workspace hand-off
  • Python 3.9+ with no runtime dependencies

Try it without changing a project

The package is currently pre-release. From a clone:

uv tool install .
unpark demo

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:

The dashboard from 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:

A fifteen-project unpark HTML portfolio

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.

After the v0.2.0 PyPI publication:

uv tool install unpark        # or: pipx install unpark

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

Version 0.2.0 is the first public release. MIT © Jörg Türmer (Joerg Tuermer).

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

unpark-0.2.1.tar.gz (339.2 kB view details)

Uploaded Source

Built Distribution

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

unpark-0.2.1-py3-none-any.whl (56.9 kB view details)

Uploaded Python 3

File details

Details for the file unpark-0.2.1.tar.gz.

File metadata

  • Download URL: unpark-0.2.1.tar.gz
  • Upload date:
  • Size: 339.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for unpark-0.2.1.tar.gz
Algorithm Hash digest
SHA256 5f79432def7fef86f8e9824effcbf693621cb2097c9aabe6976957a38cc4496d
MD5 8b2ef0e7273d11f95415049ed4a6e941
BLAKE2b-256 b2244d8e3226709e2e83cf6c673e7d687207c652dfebc7de49d2ec596a6b5d91

See more details on using hashes here.

Provenance

The following attestation bundles were made for unpark-0.2.1.tar.gz:

Publisher: release.yml on Tauris/unpark

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

File details

Details for the file unpark-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: unpark-0.2.1-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

Hashes for unpark-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7e932e211ec14e47d5bccf6fd23c9dfd40aa4454e69c975bae58bc20b05ad9de
MD5 b3348a45c8ad300c03d927cc521b8b97
BLAKE2b-256 323430d628291d229e2ca4cae2d9db49d57cf269d8fdd0a64ea9f07ddef8c2b6

See more details on using hashes here.

Provenance

The following attestation bundles were made for unpark-0.2.1-py3-none-any.whl:

Publisher: release.yml on Tauris/unpark

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