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.controldecides what to do and safety approves it, but executing it still means writing your ownexecute(). 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
