Skip to main content

metapet

PyPI Python CI License

metapet is a command-line tool, pet, for keeping notes on side-project ideas. Each idea is a Markdown file with YAML frontmatter. An idea has a stage (seed, sketch, spec, building, shipped or shelved), and moving it to a new stage asks that stage's questions, such as what problem it solves or how it could work.

The full-screen view of metapet

Installation

uv tool install metapet

or pipx install metapet. metapet needs Python 3.11 or newer and installs a command called pet. To try it without installing, run uvx --from metapet pet.

Usage

Run pet init once to create the data folder. Then add an idea with a name, a tag and a short description:

$ pet add "Nearby concert alerts" -t music \
    -m "A small service that checks which artists I listen to on Spotify and emails me when one of them announces a show in my city."
+ nearby-concert-alerts  Nearby concert alerts

The idea is saved as nearby-concert-alerts.md. pet new asks for the same things one by one instead.

Stages

pet promote moves an idea to its next stage and asks that stage's questions. Enter skips a question.

$ pet promote concert
? What problem does it solve? I find out about shows after they sell out
? Who is it for? Me and anyone who goes to a lot of concerts
? How could it work, roughly? Read my top artists from the Spotify API and check a concert listings API once a week
? What is it worth if it exists?
? Why is now a good time for it?
nearby-concert-alerts: seed → sketch

Any part of an id that matches only one idea works, so concert is enough. pet refine concert changes the answers later.

Notes and ratings

pet note concert "Songkick and Bandsintown both have APIs for concert listings"
pet set concert excitement=5 effort=M

Listing ideas

$ pet ls
id                     title                  status  exc  tags     imp  effort
recipe-box             Recipe box             seed      3  cooking       M
reading-tracker        Reading tracker        seed      2  books         M
nearby-concert-alerts  Nearby concert alerts  sketch    5  music         M
family-grocery-list    Family grocery list    seed      4  mobile     4  M

$ pet next
id                     title                  status  score  exc  tags     imp
nearby-concert-alerts  Nearby concert alerts  sketch   4.25    5  music
family-grocery-list    Family grocery list    seed     4.00    4  mobile     4
recipe-box             Recipe box             seed     3.00    3  cooking

pet next ranks ideas by excitement plus impact, divided by effort. pet show, pet search and pet review cover the rest, and pet on its own opens the full-screen view shown above. See pet --help for all commands.

Idea files

Each idea is a Markdown file that you can also edit by hand, or with pet edit. This is nearby-concert-alerts.md after the commands above, without its two empty sections:

---
id: nearby-concert-alerts
title: Nearby concert alerts
status: sketch
created: 2026-09-25
updated: 2026-09-25
tags:
- music
excitement: 5
effort: M
---

A small service that checks which artists I listen to on Spotify and emails me when one of them announces a show in my city.

## Problem
I find out about shows after they sell out

## Who it's for
Me and anyone who goes to a lot of concerts

## Rough solution
Read my top artists from the Spotify API and check a concert listings API once a week

## Notes
- 2026-09-25: Songkick and Bandsintown both have APIs for concert listings

Configuration

Data folder. Ideas are kept in ~/.local/share/metapet on Linux, ~/Library/Application Support/metapet on macOS and %LOCALAPPDATA%\metapet on Windows. Set METAPET_HOME or pass --home PATH to use another folder. pet where shows the folder in use.

Custom stages. A stages.toml in the data folder replaces the questions of any stage. The built-in file shows the format, and pet check reports mistakes.

Backup. pet init --git --remote <url> makes the folder a git repository, and pet sync commits and pushes it. A folder synced by Dropbox, iCloud or Syncthing works too.

Shell completion. pet --install-completion adds Tab completion for commands and idea ids in bash, zsh, fish and PowerShell.

Development

git clone https://github.com/jrazi/metapet.git
cd metapet
uv sync
uv run pytest

License

MIT

Release files for metapet 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 metapet 0.1.1
File Size Uploaded
metapet-0.1.1.tar.gz 84.5 kB Details

Built distribution (wheel)

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

Total release size: 148.3 kB

Release files / metapet-0.1.1.tar.gz

Download URL metapet-0.1.1.tar.gz
Size 84.5 kB
Tags Source
SHA-256 checksum
How to use checksums
e043c9fec73f1476860fcf9aae259694f35a18818f7d3f8f15eb5033cf286173
BLAKE2b-256 checksum
How to use checksums
250e5aed584157c4435701765dbcfa66e9912c3c1b8ce5d3f63b1d93de8387b4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

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

Download URL metapet-0.1.1-py3-none-any.whl
Size 63.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4f74edfe06e0669973bb3d4cca95df48a881f38d8d668b1a861dd72a655773e7
BLAKE2b-256 checksum
How to use checksums
76a2b4dee42c7ef152aa558438fa23cb017eaa1ee5d6300addf2fbecacbfb5e6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

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