A plant maintenance helper
Project description
Plantera
Too busy writing code to remember to water your plants? Try Plantera, a simple CLI tool that lets you track and schedule watering of your little work buddies.
Installation
Requires Python 3.11+.
# with pipx (recommended)
pipx install plantera
# with pip
pip install plantera
# with uv
uv tool install plantera
Quick Start
# Add a plant species to the library
plantera add-species Crassula "Jade Plant" "Soak when soil is completely dry"
# Add a plant
plantera add Bob Crassula 2026-04-01 7 "North-facing windowsill"
# See what needs watering today
plantera show --due
# Mark a plant as watered
plantera watered Bob
Commands
add
Add a plant to your collection.
plantera add <nickname> <genus> [last-watered] [interval] [environment]
nickname— your name for the plant (e.g. Bob)genus— must exist in the species librarylast-watered— date in YYYY-MM-DD format (default: today)interval— watering interval in days (default: 7)environment— optional description of the plant's location (e.g. "South-facing windowsill")
add-species
Add a plant species to the library.
plantera add-species <genus> <common-name> [care-info]
show
Show your plants or the species library.
plantera show [--name] [--species] [--due]
--name— show a single plant by nickname, including environment and care info--species— show the species library instead of your plants--due— show only plants due for watering today--namecannot be combined with--speciesor--due
watered
Mark a plant as watered. Recalculates the next watering date automatically.
plantera watered <nickname>
snooze
Delay a plant's next watering date by a number of days.
plantera snooze <nickname> [days]
days— number of days to delay (default: 1, max: 365)
update
Update a plant's details.
plantera update <nickname> [--nickname] [--genus] [--last-watered] [--next-watering] [--interval] [--environment]
update-species
Update a species in the library.
plantera update-species <genus> [--genus] [--common-name] [--care-info]
delete
Delete a plant from your collection.
plantera delete <nickname>
delete-species
Delete a species from the library.
plantera delete-species <genus>
remind
Send a desktop notification for any plants due or overdue for watering. Designed to be run on a schedule.
plantera remind
Schedule plantera remind to run daily using cron (Linux), launchd (macOS), or Task Scheduler (Windows).
config
View or update Plantera settings.
plantera config [setting] [--value] [--delete]
- Run without arguments to display all current settings
auto_interval— once set, enables automatic watering interval adjustment. Each time you mark a plant as watered, Plantera blends the real gap since last watering into the current interval using an exponential moving average:new_interval = alpha × actual_days + (1 − alpha) × current_interval. A higher alpha (e.g. 0.7) reacts faster to recent waterings; a lower alpha (e.g. 0.2) keeps it more stable. Default: 0.4.claude_api_key— once set, unlocks thediagnoseandupdate-care-infocommands.
plantera config claude_api_key --value sk-ant-...
plantera config auto_interval --value 0.3
plantera config auto_interval --delete
update-care-info
Use Claude AI to review and update the care info for a species in your library.
plantera update-care-info <genus>
Requires claude_api_key to be set via plantera config.
diagnose
Diagnose a plant's condition using Claude AI. Accepts a text description, an image, or both. Plantera automatically includes the plant's species, care info, environment, and watering history as context so Claude can give a more informed response.
plantera diagnose <nickname> [--condition] [--picture]
--condition— text description of what you're observing (e.g. "yellowing leaves")--picture— path to an image of the plant
plantera diagnose Bob --condition "brown leaf tips, soil feels dry"
plantera diagnose Bob --picture /path/to/photo.jpg
plantera diagnose Bob --condition "looks droopy" --picture /path/to/photo.jpg
Requires claude_api_key to be set via plantera config.
Data
Plantera stores all data locally in a SQLite database at ~/.local/share/plantera/plantera.db. No accounts, no cloud, no setup required.
Dev Setup
Requires uv.
git clone https://github.com/tmannell/plantera
cd plantera
uv sync --all-groups
uv run pytest
Tests are written with pytest and cover all CLI commands and service functions.
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
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 plantera-1.0.0.tar.gz.
File metadata
- Download URL: plantera-1.0.0.tar.gz
- Upload date:
- Size: 459.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aa494a4e163edf637dbb06e18f9fd5c4cef47e8251444dc5afc533744028680e
|
|
| MD5 |
85dd94d3cc59b923430ff7b77ac8c4d9
|
|
| BLAKE2b-256 |
e92a2816025fc44318f92c0140484250ae5c77fcbf12b65a1e3dafeae06797f8
|
File details
Details for the file plantera-1.0.0-py3-none-any.whl.
File metadata
- Download URL: plantera-1.0.0-py3-none-any.whl
- Upload date:
- Size: 27.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9ce8d7b42e42b8e48fbb19660b3accb8a49df609087c0481244ff1984d7c8c81
|
|
| MD5 |
be03b48ecb17c09de6e9bb4474bc5f51
|
|
| BLAKE2b-256 |
ee52ffcedae684ca77cd48aa13baf2c8e6b506073c4ba70fc7a6c2f20a8621f7
|