Skip to content

LLM Resources

TO DO Smartplant โ€‹

โœ… Done in v3.0 โ€‹

  • Kernel with a real plugin API (use, registerPlugin, getSensor, analyze)
  • Sensor abstraction layer + 7 drivers (mock, manual, serial, mqtt, http, homeassistant, electrode)
  • Persistent plant memory with care log, species profile and 1.x migration
  • Multi-provider AI with retries, caching, structured output and offline fallback
  • First-person voice with 5 personas across 10 languages
  • Semantic event bus (plant:thirsty, plant:stressed, โ€ฆ)
  • All 10 plugins rewritten on the kernel, each with a passing test
  • CLI split from the library, with one-shot commands for scripts and cron
  • Electrophysiology, vision, symbolic knowledge and semantic memory
  • Symbiosis layers: fusion, control, safety, evidence, personalization
  • Hardware autodetection, firmware generation, OpenClaw adapter

โ˜€๏ธ Core โ€‹

  • TypeScript declaration files (.d.ts) generated from the JSDoc
  • Reading downsampling โ€” keep minute resolution for a day, hourly beyond that, so long-lived plants don't grow an unbounded memory file
  • Actuator drivers: plant.body.control decides what to do and safety approves it, but executing it still means writing your own execute(). A driver contract for pumps, valves, smart plugs and motors is the missing half.
  • Multi-plant manager: one process, one memory root, many plants

๐ŸŒก๏ธ Sensors โ€‹

  • Bluetooth driver for Xiaomi Mi Flora / HHCC (very common, very cheap)
  • Camera input โ€” leaf colour and wilting as additional signals via a vision model
  • Sensor calibration offsets per driver

๐Ÿง  AI โ€‹

  • Embed the species profile once and reuse it, instead of resending it each call
  • Token accounting exposed on plant.ai.stats
  • Streaming replies for speak()

๐Ÿ’ก Ideas โ€‹

  • Web dashboard reading the memory JSON directly
  • Export to Home Assistant as a set of entities, closing the loop both ways
  • Community species-profile registry so the first AI call is unnecessary