All plugins

hermes-plant

A calm little garden for Hermes Desktop that grows in real time. It sits above the app like the Hermes pet, takes no layout space and can be dragged anywhere. Click a plant for a care wheel: water, prune (you choose which tip to cut, and the piece drops away), rotate, fertilize, repot, pick, sell, or ask Hermes. Four species (leafy plant, fern, cactus, little tree) grow in their own ways, pruning shapes how each one branches, and neglect only pauses them. Care earns play coins, and a small shop sells more plants and fertilizer, up to six pots. Bugs land now and then and can be shooed away. Two agent tools let Hermes check the garden and tend it when you ask. Original blue-ink artwork drawn in code. Reachable from the status bar, the command palette and the keyboard, and it speaks through the Hermes pet when one is showing. Disclosure: no network requests, no background model calls and no background processes; Ask Hermes submits one chat message only when you press it; coins are play money inside the plugin; the garden is kept in Desktop plugin storage and in plugin-data/hermes-plant/data.db; the plugin adds its own floating element to the page (Hermes has no SDK area for one) and removes it on unload, without reading or changing core markup.

tuancookiez-hubDesktopv1.2.0Updated 1 hour ago

About

A calm little garden for Hermes Desktop that grows in real time. It sits above the app like the Hermes pet, takes no layout space and can be dragged anywhere. Click a plant for a care wheel: water, prune (you choose which tip to cut, and the piece drops away), rotate, fertilize, repot, pick, sell, or ask Hermes. Four species (leafy plant, fern, cactus, little tree) grow in their own ways, pruning shapes how each one branches, and neglect only pauses them. Care earns play coins, and a small shop sells more plants and fertilizer, up to six pots. Bugs land now and then and can be shooed away. Two agent tools let Hermes check the garden and tend it when you ask. Original blue-ink artwork drawn in code. Reachable from the status bar, the command palette and the keyboard, and it speaks through the Hermes pet when one is showing. Disclosure: no network requests, no background model calls and no background processes; Ask Hermes submits one chat message only when you press it; coins are play money inside the plugin; the garden is kept in Desktop plugin storage and in plugin-data/hermes-plant/data.db; the plugin adds its own floating element to the page (Hermes has no SDK area for one) and removes it on unload, without reading or changing core markup.

Hermes Plant

A calm little garden for Hermes Desktop. It sits above the app like the Hermes pet, takes no layout space, and grows in real time.

Four species: leafy plant, fern, cactus and little tree

You start with one plant and a few coins. Looking after plants earns coins, coins buy more plants and fertilizer, and the garden grows to as many as six pots along the bottom of the window. Hermes can look after it too when you ask. If you forget it, plants droop, lean or stop growing. They never die, and they pick up again when you tend them.

Using it

  • Click a plant to open its care wheel. Hover an action to see what it does.
  • Click the coin pill beside the garden to open the shop.
  • Click a bug when one lands on a plant to shoo it away for coins.
  • Drag any plant to move the whole garden. It remembers where you put it.
  • Click the sprout in the status bar to hide or show the garden. It tells you when plants need care.
  • A dot on a plant means it needs something. With the wheel open, arrow keys move between actions, Enter picks one, and Esc closes it.

The care wheel

| Action | What it does |
|---|---|
| Water | Keeps the plant growing. How long it lasts depends on the species. Watering a thirsty plant earns 2 coins. |
| Prune | Lights up every tip of the plant. Click the one to cut: the scissors snip, the piece drops away, and new shoots branch from the cut. The clippings earn coins. |
| Rotate | Turns the pot. A plant leans toward the light over about ten days, and turning it lets it straighten. |
| Fertilize | Uses one fertilizer: 8 hours of growth at once, then growth half again as fast for two days. |
| Repot | Moves the plant to a bigger pot once its roots have filled this one. |
| Pick | Sells what a fully grown plant has made. It needs two days to make more. |
| Sell | Sells the whole plant. Press twice to confirm. Your last plant can't be sold. |
| Ask Hermes | Sends one chat message asking how the garden is doing. |

The species

| Species | Price | Water lasts | Pace | Notes |
|---|---|---|---|---|
| Leafy plant | 15 | 3 days | normal | The plant you start with. Three leaf shapes. |
| Fern | 25 | 2 days | fast | Thirsty. Pruning makes it fuller. |
| Cactus | 40 | 9 days | slow | Almost looks after itself. Sells for about twice as much. |
| Little tree | 60 | 4 days | slow | Sells for three times as much. |

Every plant has its own seed, so two plants of one species still grow differently, and you decide how each one branches by choosing where to cut.

The same plant left alone, pruned once, pruned often, and forgotten

How plants grow

  • Growth counts only while a plant is watered. When it dries out it droops and waits.
  • There are four stages: seedling, young (1 day of growth), grown (4 days) and fully grown (10 days). A fully grown plant flowers.
  • Each pot holds only so much growth. A root-bound plant stops growing until you repot it, so each new stage starts with a bigger pot.
  • Fertilizer is the way to hurry a plant along. You start with two, and the shop sells more for 8 coins.

A leafy plant from seedling to flowering

Growth is worked out from saved timestamps whenever the garden is drawn. Nothing runs while Hermes is closed, and time away still counts.

Coins and the shop

You start with 20 coins. You earn more by pruning (2 to 5 coins), watering a thirsty plant (2), shooing a bug (2), picking from a fully grown plant (12 and up) and selling plants. A plant is worth more the more it has grown.

The garden shop

Hermes can tend it

| Tool | What it does |
|---|---|
| plant_status | Reports every plant (stage, mood, needs, water left, what it would sell for), the coins, the fertilizer and the shop prices |
| plant_tend | Waters, prunes, rotates, fertilizes, repots, picks, sells, buys or shoos a bug, and reports what happened |

Try "how is my garden doing?", "water whatever is thirsty" or "buy me a cactus". The garden on screen follows within a moment. Hermes only tends, buys or sells when you ask it to.

Commands and keys

Every care action is in the command palette under Houseplant, along with open care wheel, open the shop, shoo the bug away and show or hide the garden. A care action from the palette goes to the plant that wants it most, and a prune from the palette, a key or Hermes cuts the tallest tip.

| Key | Action |
|---|---|
| Ctrl+Alt+H (Cmd+Alt+H on macOS) | Open the care wheel |
| Ctrl+Alt+W (Cmd+Alt+W on macOS) | Water the thirstiest plant |

The other actions have no default key. You can bind any of them in the keybind settings.

The garden speaks through the pet

When a Hermes pet is on screen, the garden's lines appear in the pet's speech bubble. With no pet, they appear above the plant, or in the status bar when the garden is hidden. It speaks when you tend a plant, when a plant starts to need something, when one reaches a new stage, and when a bug lands.

Install

Hermes Desktop is required.

hermes plugins install hermes-plant

Then enable Houseplant in Capabilities → Plugins. The garden appears straight away.

The agent tools need the Python half as well: add hermes-plant to plugins.enabled in config.yaml, restart the gateway, and start a new chat. Without that, the garden still works in Desktop and keeps its state there.

A plant from version 1.0 carries over as the first pot of the garden.

Data, network and cost

  • Network: none. The plugin makes no requests outside this machine.
  • Model calls: none in the background. Ask Hermes sends one chat message when you press it, which reaches your model provider like anything you type. The two agent tools run only when Hermes calls them in a chat.
  • Background work: no background processes. While Desktop is open, the garden redraws at most once a minute and checks its own backend for changes made by the agent tools.
  • Coins: they are play money inside the plugin. Nothing is bought or sold for real.
  • Stored data: the garden is kept in Hermes Desktop plugin storage, and in plugin-data/hermes-plant/data.db inside your Hermes home when the Python half is enabled. The two copies sync, and the one with the newer action wins. Nothing is stored in the install folder.
  • Overlay: Hermes has no plugin area for an element that floats above the app, so the plugin adds its own element to the page and removes it when the plugin is unloaded. It does not read or change Hermes's own interface. A future Hermes update could change how the overlay behaves.
  • Art: all artwork is drawn by the plugin's own code as SVG. No images or fonts are bundled.
  • Motion: the wheel, water drops, scissors, coins and leaf sway are short CSS animations, and they are switched off when your system asks for reduced motion.

Development

desktop/plugin.js is generated from desktop-src/. The garden's rules exist twice, in desktop-src/src/engine.js for Desktop and plantcore/engine.py for the agent tools, and desktop-src/test/parity.json keeps the two in step. Shapes and drawing are Desktop only, in shape.js and art.js.

npm ci --prefix desktop-src
npm test --prefix desktop-src
npm run build --prefix desktop-src
python -m pytest

After changing a rule, change it in both engines and run npm run parity --prefix desktop-src to refresh the shared test data.

License

MIT. See LICENSE.

README from the reviewed commit f387648; it updates when the author re-pins.

More by tuancookiez-hub

8 plugins by tuancookiez-hub in the catalog.

tuancookiez-hubhyatlasHyAtlas 5 — self-hosted 8-layer memory provider backed by a pure-Go single-binary server you run yourself (chromem-go vectors, in-process BGE-small embeddings, hybrid vector + keyword search, bitemporal knowledge graph with source citations). Embeddings, the vector index and stored memories are kept locally. Ships agent tools (hyatlas_status/search/recent/add), a `hermes hyatlas` CLI, a Desktop pane with a starmap graph view, and a web dashboard. Disclosure — requires the separate hyatlas-go server, installed by the user. The plugin never downloads or bundles it, and it talks only to the configured server (default 127.0.0.1:19528). Embeddings are computed locally; stored memories leave the machine only in the LLM calls described below. Extraction is opt-in and uses an LLM you choose: `hermes memory setup` asks for any OpenAI-compatible endpoint, model and key, and stores the key in Hermes's .env as HYATLAS_LLM_KEY. The plugin reads that key only through Hermes's get_secret and reads no Hermes credential. A plain key file named by HYATLAS_LLM_KEY_FILE also works; the server reads it on every call, so do not point it at another program's credentials such as Hermes auth.json. The server has no default endpoint and makes no LLM call until the endpoint, the model and a key are all present; while the endpoint and model are set but no key has arrived, /api/v1/status reports llm "awaiting_key". `hermes memory setup`, the repo installer and the sample launcher pre-fill a free Nous Portal endpoint and model (and setup defaults to ultra mode), but nothing is sent until a key is supplied. A server the plugin starts gets that key in its environment; for a server started another way (the launcher, a service) that reports "awaiting_key", the plugin (at most every 10 minutes) and `hermes hyatlas doctor` POST the key over plain HTTP to /api/v1/llm/key, only when the configured server host is this machine; the server accepts it only from a loopback address and keeps it in memory only, never on disk. Once configured, each turn's user and assistant text goes to that endpoint (not tool output or context summaries; capped at 12,000 characters), together with up to 5 related stored facts, 3 entity pages and 5 open intentions of that owner so the model can update them instead of duplicating them. In the default ultra mode the server also sends topic-grouped batches of up to 50 stored facts to it every 6 hours (every 20 minutes while earlier batches are still pending) and supersedes (hides but keeps) the facts the model marks merged or stale, recording a reason for each drop. It also records relations corroborated across turns in the local knowledge graph (HYATLAS_CONSOLIDATE_GRAPH=off disables that). Once a day per owner (HYATLAS_CROSS_SCHEMA_EVERY; off disables it) ultra also sends up to 40 of that owner's stored patterns to find up to 3 that hold across topics. In pro and ultra modes it also sends each owner's open intentions, recent summaries and newest facts to rewrite a short Now page, at most every 15 minutes (HYATLAS_NOW_EVERY), and, after a 30-minute pause in an owner's writes (HYATLAS_EPISODE_GAP; off disables it), up to 40 of that stretch's facts to write one episode summary. HYATLAS_RECONCILE=on (off by default) adds a second LLM call per write that sends the new facts together with similar stored ones (including those under user IDs grouped with the owner by HYATLAS_USER_ALIASES) so the model can update, replace or link them; it is meant for a local model. An optional HYATLAS_LLM_FALLBACK_MODEL, tried only when a primary call fails, receives the same text; it is sent the primary key only when it uses the same host. Turns written while the endpoint was unreachable or before a key arrived are extracted later by a catch-up pass (every 10 minutes by default, HYATLAS_CATCHUP_EVERY; rows up to 7 days old, HYATLAS_CATCHUP_MAX_AGE), sending the same text a write would have sent. `hermes hyatlas doctor` sends one short test prompt ("Reply with the single word OK.") to the endpoint and writes, finds and deletes one test memory. When you replace or remove an entry with Hermes's memory tool, the plugin asks the local server to retire the matching memory (reversible); nothing leaves the machine. HYATLAS_MODE=lite makes no LLM call. Server endpoints that rewrite stored data are off unless the server runs with HYATLAS_ADMIN=on. The spawned server gets an allowlisted environment (OS essentials plus HYATLAS_*), not the agent's keys. auto_start is off by default; when on, Hermes starts the server as soon as it loads the plugin, and a server started by auto_start or `hermes hyatlas start` keeps running after Hermes exits until `hermes hyatlas stop`. On Windows, if a hyatlas-go.ps1 launcher is configured, `hermes hyatlas start/stop` runs it; the repo's sample launcher reads no credentials (since 4.8.0 it no longer reads Hermes auth.json). No telemetry.Communitymemory31tuancookiez-hubenhance-promptA sparkle beside Send that rewrites the composer draft in place without sending it, deepening it into a clarifier, a task list, then a phased plan on further clicks, with a one-click discard back to the original. Also registers the `/enhance` slash command and the `enhance_prompt` tool for the same rewrite from the agent. Draft read and write go through `host.composer`, so `@file` and `/command` chips survive. Disclosure — every click runs one stateless `llm.oneshot` call on your own gateway with the focused chat's model (the auxiliary title model when no chat is focused), followed by a second short call to score the result, so it spends your model credits. It is not an agent turn: no tools run and nothing is written to a session you cannot see. It overrides no model, sends nothing to a third party, never sends the composer message, and carries no telemetry, no credentials and no self-update.CommunityDesktop app6tuancookiez-hubdiscord-tpsShow live tokens-per-second and the active model on your Discord bot's presence. Disclosure — Replaces the Discord bot's public presence with the live tok/s figure and the model name of the most recent API call in this gateway (any platform or chat), visible to anyone who can see the bot; updates at most every interval seconds (minimum 10) over the gateway's existing Discord connection. Reads no credentials and makes no network calls of its own.Communityplatform1tuancookiez-hubmodel-explainerA Models page for Hermes Desktop built around your own model picker: choose a model to see its Hermes Index score, cost per task, context and output limits, price, abilities and your own measured speed and spend, with a score-against-cost frontier chart, and compare up to four side by side. Every value cites a source and date. Disclosure — one GET of a public JSON data file from the author's GitHub repo (raw.githubusercontent.com/tuancookiez-hub/hermes-model-explainer, main branch, so its contents can change after this pin), at most daily and only when the page opens (can be turned off; the bundled copy works offline; the file is validated data, never code); reads model.options and the focused session's model and usage figures; writes plugin storage, and switches the chat model only when the user presses Use this model (the same config.set request as the built-in picker, scoped to the open chat). Desktop only: no agent tools, hooks, middleware or env vars.Communitymodels1

Developer Mode

Explore built-in Hermes toolsets and actions.

HermesAgent

Developer?

Create a Hermes extension for Desktop or agent workflows.

Developer Section