Digital Stealth Care · features

Everything DSC does today

175 of 182 features are live across 16 areas. Search them, filter by status, or pick an area. Every line says live, in testing or planned, and comes from the code running on our reference rig. Coming from a DIY setup? These are made for grow rooms out of the box. No YAML, no scripting.

Running on our test kit: 9.10.0 · kit firmware 9.0.0.0 · last report 22 Oct 2026

Dashboard

6 live · 1 in testing

Since 9.8.9 the dashboard opens on Today, with one page per space and one screen each for devices and issues. Every screen shows the reading, what the plant wants and what drives it.

  • LiveFive-item navigationToday, Spaces, Devices, Issues and Settings along one bar, with Twin, CannaLib and Logs in a small More sheet. The default since 9.8.9.
  • LiveSpaces pagesOne page per tent or room: the reading, what it wants, what drives it and what you can do about it.
  • LiveDevices screenEvery device by type, with chips for its class, who drives it and its state.
  • LiveIssues screenOne place for everything that needs you, each issue with its cause and a what-to-do line.
  • In testingTimed runsAsk for a device to run for a set time from its tile. Until that device's class is handed over, the request is recorded as planned and nothing is switched.
  • LiveOvernight cardA morning summary on Today of what happened while the lights were off.
  • LiveFirst-run guideA short guided setup that adds your first space and its devices.

Climate control

14 live · 1 in testing

Air and leaf VPD, an 11-stage target rail, and a fan-first escalation ladder that lives in the hub firmware. The hub's firmware drives the room today, so it stays in range even with the Pi switched off. The brain's planner is being tested alongside it and does not control anything yet (see what runs today).

  • LiveVPD calculation (air + leaf)Computes air VPD from dry-bulb temp/RH and a separate leaf VPD from an IR leaf-temperature sensor, so the grower sees the number that actually predicts transpiration/mould risk, not just a room-air proxy.
  • LiveDew point / absolute humidityWorks out the dew point and the absolute humidity from temperature and humidity, so you can see condensation risk coming.
  • LiveVPD-vs-band deficitShows the signed distance from live VPD to the nearest edge of the plant's Want band, so "too dry/too wet" is a number, not a guess.
  • LiveStage-based target rail (11 stages)A brain-owned, editable table of temp/VPD/RH/light-hours targets per growth stage (Germination → Final Flush, plus Dry/cool-dry variants), written to the hub when a stage changes.
  • LiveClimate modesOne set of climate modes for the small tent: follow the 4x8 tent, follow the plants, custom, or off. The dashboard and the hub firmware use the same list, and older settings carry over.
  • LiveZone → placement → position sensor modelResolves which physical T/RH sensor answers for a zone (indoors/outdoors, per-zone deltas like canopy-vs-exhaust), shared by every climate consumer.
  • LiveFull Auto escalation ladder (hub firmware)The hub steps up fan speed and then the appliances when the room drifts out of range, working for the priority tent first. A held alarm state clears only when you switch to Full Auto or Manual.
  • LiveEmergency over-temp failsafeBuilt into the hub firmware: above 35 °C it runs the exhaust and intakes at full speed, turns the room fan off, stops asking for heat and turns the air conditioner on. It overrides every other mode, including Manual Takeover.
  • LiveSensor watchdogHub-side watchdog that safes the ladder/compressor if a climate sensor goes stale, independent of the Pi brain.
  • LiveAppliance seats: heater, heat mat, humidifier, dehumidifier, air conditionerEach appliance type has its own firmware for the Sonoff relay that switches it, with its own demand switch, and takes its place in the hub's escalation ladder.
  • LiveSonoff appliance driver (Pi path)Mirrors hub demand to the four Sonoff plugs every 2 s. Each plug starts off at power-on and switches itself off if it has not heard from the brain for its grace time (heater 60 s, heat mat 90 s, humidifier 90 s, dehumidifier 240 s).
  • LiveFan-as-rows airflow model + CFM rosterTreats each fan (exhaust out, recirc, intake main, intake 2×4, plus any added fans) as a row with a nameplate/calibrated CFM, feeding one shared roster used by Climate, the twin and recipes.
  • LiveFan CFM calibrationPer-fan calibration curve (nameplate vs measured CFM) recorded and superseding the maker nameplate in the airflow model.
  • LiveTent pressure / airflow pathsTwin-side model of duct runs and airflow paths for added fans, so pressure/airflow is drawn against the real ducting rather than a guess.
  • In testingBrain-planned demand (being tested)The brain's planner works out what it would do from what the room measures and what each device can do, and records it. It does not control anything yet: the hub's own ladder still drives the room.

Lighting

11 live · 1 in testing

One photoperiod source of truth for every tent, DLI and PPFD estimated from the maker's own map, and schedule changes that wait for your approval.

  • LivePhotoperiod single source of truthOne module resolves main (4×8) and clone (2×4) light-on time/hours, clone-follows-main mode, and short-flower on state.
  • LiveStage-driven light hoursLight hours follow the grow stage: 18 hours in vegetative, 12 in flower, 0 while drying. They change when the stage changes.
  • LivePhotoperiod conflict bannersFlags dark-window violations and cross-tent conflicts (never auto-corrects), writing a system journal entry.
  • LiveApprove-only schedule shift/flipLets the operator plan a photoperiod slide (ramp) or a stage flip request that must be explicitly approved, never silently mutates the schedule.
  • LiveDLI / PPFD estimate from maker mapEstimates canopy PPFD and DLI from a bound fixture's published PPFD-by-height-and-dim% map, height-scaled by a fitted power law (or inverse-square with one data layer), always labelled as an estimate.
  • LivePPFD map card (Map/3D/Spectrum/Bands)Per-fixture light card reading the CannaLib lights store, showing the maker's PPFD map, 3D surface, spectrum and DLI target bands.
  • LiveLight plug drive (Tuya)Drives a tent lamp that lives on a bound Tuya smart plug directly from the hub's photoperiod window, for lamps with no native ESPHome relay.
  • In testingLight hours vs plug disclosureExplicitly surfaces that the plug's own state can drift from the tracked light hours (the plug is switched, but the main_fixture record can be unbound), rather than hiding the gap.
  • LiveLight catch-up hold / releaseA held (paused) photoperiod catch-up turns the lamp back ON on release; cancelling a catch-up requires a hub flash rather than a soft toggle.
  • LiveDimming / dim-% aware PPFDThe DLI/PPFD estimate factors the fixture's current dim % into the maker map lookup.
  • LiveLight lens (3D twin)A twin overlay lens that renders modelled light coverage/intensity across the canopy.
  • LiveCanopy field layerInterpolated canopy-level field (light/thermal) drawn across the measured room from capture-grid readings.

Root zone

11 live · 1 in testing · 1 planned

A 7-in-1 probe per pot, runoff trays that tell you when a plant is sitting in water, and crop steering with a dryback chart instead of a guess.

  • Live7-in-1 NPK RS-485 soil probeReads a JXCT-style Modbus soil probe per pot: moisture %, soil temp, EC, pH, N, P, K.
  • LiveSoil channel calibrationPer-channel offset/scale calibration (moisture, EC, pH) with provenance (manual / peer-median / lab-buffer method + timestamp) stored on the ESP and mirrored to entities.
  • LiveMobile soil probe testsA guided check for a hand-carried soil probe: take a reading, confirm it, and compare it with the usual reading for that spot.
  • LivePlant ↔ probe assignmentSource-of-truth binding of a physical probe to a plant for its life, surviving plant moves/rehomes.
  • In testingIrrigAct: brain-commanded irrigation shotsFires irrigation shots via a bound Zigbee pump plug, with an "honest OOS" (out-of-service) state and a rule that a shot never rounds to zero (which would leave the pump stuck on). New in 9.9.1, not yet tested on hardware.
  • LiveRunoff-tray leak sensorsOne leak sensor per pot's runoff dish: notifies wet-tray, flags a pot "sitting" in runoff too long, and estimates time-to-runoff per watering as a per-plant water-use signal.
  • LiveRunoff EC/pH trend & alertTracks how a plant's runoff EC/pH shifts across a run and alerts on the operator's own threshold.
  • LiveReservoir Mix verifierA nutrient-mix panel that *verifies* a tank mix (measured EC vs Want band, vs the operator's own prior mixes at the same strength, vs draw-down rate) instead of predicting EC from label claims, doses/actuates nothing.
  • LiveNuteLib feed-chart integrationBinds a nutrient slot to a DSC-NuteLib product; fills dose from the maker's stage dosing row; a tent can follow a maker feed chart by week (flower/veg week from flip/sprout date); predicts mix EC as an advisory number only.
  • LiveCrop-steering phase (P0 to P3)Bar-3 crop-steering source of truth: resolves the dryback phase (P0 generative → P3 late-flower) from probe dryback % and photoperiod, feeding VWC/dryback targets.
  • LiveDryback chartVisualises measured dryback % against the P1 to P3 dryback limits for root steering.
  • LiveSensor trust for root readingsFlags a stuck pot reading (near-zero rate of change for 45 min), a pot diverging from peers (MAD), or a DHT/soil disagreement, so root data quality is visible before it drives a decision.
  • PlannedRoot steering pump calibrationPlanned calibration step for the fertigation pump's dose-per-second, blocked on hardware not yet built.

Plants and grow cycle

11 live

Pick a strain and the brain reads its flowering time from its CannaLib profile to work out the stage and harvest window, and says which source gave each number. Dry and cure are tracked down to the humidity puck in each jar.

Most grow controllers know the time. This one knows 143,611 strains, their family trees and 21,141 cup results, and shows its working. See it at cannalib.org.

  • LiveStage-from-age modelDerives a plant's growth stage from its age against curated Want-band thresholds, porting the retired HA template pack's logic to the Pi.
  • LiveStrain profile (3-tier lookup)One strain record per cultivar, looked up from the CannaLib service online, then from the copy on the Pi, then from a small curated list. It is kept, so a network outage never blanks the record, and no step invents a value.
  • LiveWant band resolutionResolves a plant's target band (pH, EC, moisture, temp, RH) from catalog → operator custom → stage default, in that priority order.
  • LiveHarvest window estimateEstimates the expected harvest date range from the strain's flowering time and the flip date (operator-entered, journalled, or calendar-inferred, basis always disclosed).
  • LiveFollow Plants clone modePi-owned clone-tent target resolution that takes the strictest intersection of all occupant plants' Want bands, so a shared 2×4 never satisfies one plant at another's expense.
  • LiveDry run trackingOn flip to a Dry zone, records which plants entered and their wet weight, then tracks weight loss toward ~75%, stem-snap check timing, and mould risk against the chosen dry strategy (fast/balanced/slow).
  • LiveCure jar trackingTracks each cure jar (Zigbee humidity puck) as its own climate, turning RH plus burp/jar-up journal entries into settle/burp/too-dry advice; alerts if a jar's puck goes silent.
  • LiveCooler dry / cure stage presetsAdds "Balanced dry" and "Slow dry" stage-rail rows (cooler than the hub's native Dry Mode) selectable per zone's dry strategy.
  • LiveRun report (yield vs evidence)At harvest, computes yield per m²/W/kWh/mol beside the run's recorded evidence (VPD time-in-band, DLI days in target, dryback held, probe fault minutes), so a low-yield claim is checked against the record.
  • LiveA tent's run (open/close)A "run" is the zone's occupancy episode from plant-in to harvest-close, the anchor run_report evaluates against.
  • LiveCatalog-in-the-grow reportReports what each catalog tier (CannaLib/KitLib/NuteLib) actually contributed to a given plant and fixture, for transparency on where a number came from.

Sensors and device integrations

17 live

Four local lanes, no cloud in any of them: ESPHome native API, an ESP-NOW mesh, Zigbee2MQTT and Tuya over the LAN. Paired devices are matched to library products automatically.

  • LiveReading the hub, pots and plugsReads the hub, all four pot nodes and the Sonoff plugs over their native ESPHome connection, one steady connection per device.
  • LiveESP-NOW mesh (hub ⇄ panel ⇄ pots)Direct ESP-NOW link between the hub, the CYD touch panel and the pot ESPs for vitals/config/commands that keeps working with the Pi down; the panel can never bypass hub-side failsafes.
  • LiveFleet self-healThe hub firmware keeps running totals of humidity and mister use, checks that its settings agree, and rejoins devices that drop off the ESP-NOW radio network.
  • LiveZigbee devicesReads Zigbee canopy sensors and extra plugs through Zigbee2MQTT on the Pi, using a Zigbee coordinator dongle plugged into the Pi.
  • LiveZigbee device-role catalogReference archetypes for Zigbee device types: capability class, exposed datapoints, whether the automation engine can actuate it, and suggested roles.
  • LiveZigbee device tasks/policiesCurated per-role recipes (e.g. floor-flood → alert, runoff-tray → alert, tank-full → appliance cut, lamp-follow-photoperiod, hazard Safety cut-off) bindable to paired devices by capability class.
  • LiveTuya and Smart Life devices, localTalks to Tuya devices directly over your own network, one connection per device, with no cloud in the loop.
  • LiveTuya device archetype catalogDefault DPS maps/scales per Tuya hardware profile, with an operator-editable override after a raw "Probe" of the device's DPS.
  • LiveBluetooth LE ingest (Theengs Gateway)Compose ble service (theengs/gateway) scans the Pi onboard radio over BlueZ D-Bus, publishes decoded advertisements to Mosquitto; brain keeps sensors 24 h (max 200) with merged readings and gateway health on /health.
  • LiveDevices recognised when pairedWhen you pair a Zigbee or Tuya device, or DSC hears a Bluetooth sensor, it looks the device up in DSC-KitLib and fills in the nameplate. An exact model match ranks first.
  • LiveMaker presets from matched productOnce a device is matched to a KitLib product, offers (never silently applies) the maker's nameplate CFM, duct size and wattage into the device record.
  • LiveDevice bindings: role, zone and jobOne way to say where a device lives and what it is for, shared by Zigbee and Tuya devices.
  • LiveDevice calibration storePersists calibration curves for fan CFM and light PAR against a device.
  • LiveSensor trust / stuck-sensor detectionFlags stuck pot readings, peer-divergent sensors (MAD), and DHT vs. tent-vs-room disagreement, all on soak-tuned thresholds.
  • LiveIngest cadence ladderChooses which poll-rate rung (idle → actively-reading) each device should run at, so a device being watched live polls faster without hammering every device all the time.
  • LiveTuning modifiers and sensor offsetsFleet-wide multipliers and per-sensor offsets, for example to correct a sensor that always reads a little off, without touching its raw reading.
  • LiveSteady across a hub reconnectIf the hub drops off for a moment and comes back, DSC's temporary override expires cleanly instead of fighting the hub's own re-assert.

Cameras

15 live

USB webcams, RTSP, MJPEG, HTTP snapshots or a spare Pi running motionEye. Frames stay on the kit, timelapses assemble themselves, and canopy cover gets measured.

  • LiveUSB / V4L2 webcam sourceReads a USB webcam plugged into the brain Pi via ffmpeg -f v4l2 from a stable /dev/v4l/by-id path; nodes are probed with VIDIOC_QUERYCAP so only real capture devices are listed.
  • LiveCamera snapshot URLFetches a single picture from a web address, which suits most IP cameras.
  • LiveMJPEG stream sourceOpens an HTTP multipart MJPEG stream, pulls the first complete JPEG, and hangs up.
  • LiveRTSP stream sourceGrabs one frame from an RTSP/RTSPS stream with ffmpeg -rtsp_transport tcp.
  • LivemotionEye satellite sourceReads a spare-Pi + motionEye "satellite" camera's per-camera MJPEG stream port (8080+N) as if it were any IP camera, letting old boards double as vision nodes.
  • LiveFraming transform (mirror/flip/rotate/zoom)Bakes mirror, vertical flip, quarter-turn rotate and 1 to 8× digital zoom into the stored frame at capture time (not a browser-side filter), so every downstream consumer (timelapse, journal, regions) agrees.
  • LiveUSB camera v4l2 controlsReads and re-applies a USB webcam's own exposure/focus/white-balance/image/PTZ controls via raw v4l2 ioctls before every capture (survives a UVC replug reset).
  • LiveCapture cadence & lights-on gatingCaptures on an operator interval (1 to 60 min), optionally gated to the zone's photoperiod window, with an honest "window unknown, captured anyway" fallback.
  • LiveCamera storage limitsDeletes the oldest days of camera frames each hour once you pass your keep-days or storage limit. The latest frame and finished timelapses are never deleted. Storage per camera shows in Settings.
  • LiveRemovable-drive recording storageMedia (camera frames, timelapses, journal photos, twin stills) can live on a USB stick mounted at /media, so recordings can be carried off the kit.
  • LiveTimelapse assemblyBuilds a day or a week of camera frames into a video on demand, every day after midnight, or every week. Each build adds a journal entry with the frame count and a link.
  • LiveTimelapse segments (view-change split)Detects when a camera has been bumped/re-aimed (ring-correlation + shift search on consecutive lit frames, or a JPEG-size change) and starts a new timelapse segment rather than splicing two views together.
  • LivePlant regions & canopy coverLets the operator draw polygon regions on a reference frame and computes a foliage "cover" share (excess-green pixel test); adds a real cm² once a scale marker is set; flags the camera moved and withholds the number if the live view no longer matches the reference.
  • LiveJournal entries with a camera frameJournal entries can carry a captured camera frame as attached evidence.
  • LiveClip export (GIF / WebM / MP4)Exports a short clip (animated GIF, WebM or MP4) from recorded frames/twin capture, sized to stay a few MB.

Journals

11 live

Plant, room and facility journals. Every entry can freeze a sensor snapshot, so a note is evidence, and reminders are anchored to what you actually logged.

  • LivePlant journalPer-plant journal that follows plant_id for its whole life, independent of which zone the plant currently sits in.
  • LiveRoom / space journal + rollupNative journals at the room and space (tent) level, with the room journal rolling up its child tents' entries at read time.
  • LiveFacility (DSC-Core) journalBubbles room-scoped system journal rows up into one facility-wide feed.
  • LiveTyped journal actionsA list of things you can log, such as watering, feeding, pest checks and cleaning. Each has its own fields, and can freeze a sensor snapshot. You can add your own types.
  • LiveJournal snapshot captureWhen you save an entry, DSC can freeze the right live sensor readings into it, so the entry is evidence and not only a note.
  • LiveJournal follow-throughA logged entry can do the next job for you, for example logging a watering moves a reminder's due date.
  • LiveWatering/feeding remindersCadence reminders anchored to the journal itself ("every 3 days since the last watering entry"), not a fixed alarm clock, logging the action is what clears it.
  • LiveJournal media (photos)Attach your own photos to journal entries. The photos are stored as files on the Pi, not inside the database.
  • LiveProcedures / SOP checklistsNamed procedures (Sanitation, IPM scout, Quarantine check, etc.) that open on a trigger and tick themselves off either from the matching typed journal entry or an observed condition; only what can't be observed needs a manual tick.
  • LiveJournals & storage settingsOperator-facing settings for per-journal retention and archival, plus the per-camera/media storage report.
  • LiveGrow log (event log)A Pi-native mirror of the old HA logbook, the running chronological grow event feed shown on the Live/Mission page.

3D digital twin

19 live · 1 planned

A measured room with every fan, lamp, duct and probe placed by drag-and-drop. Eight lenses, replay of any moment, and a scenario runner to preview tonight before you commit.

  • LiveMeasured room shellOperator-entered room measurements (inside width/depth/height, door, windows, exhaust ports, GPOs, ceiling light) replacing a hard-coded placeholder box.
  • LiveGuided room-measuring wizardStep-by-step wizard that walks the operator through measuring the room and placing tents against walls.
  • LivePlacements (drag-and-drop layout)Every piece of equipment is a placement record (anchor + rotation) the operator can drag in the twin with a gizmo, replacing 36 hand-written offsets in the old scene code.
  • LivePlacement undo + clearance warningsUndoes a placement move and warns when a moved object now clears a wall/another object too closely.
  • LiveRuns (ducts/cables/lines as data)A duct, cable, drip line or hose is stored as a real polyline (from/to anchors + waypoints) instead of a procedural guess, so the twin draws the actual run.
  • LiveLayout drafts + compare + applyNamed layout drafts (placement/run overrides) can be edited beside the live rig, compared against it, and only explicitly "applied" to become the live layout.
  • LiveMeasurement toolsIn-scene measuring tools (hang height, tape measure) plus a Measures panel for recorded dimensions.
  • LiveCapture grid (hand-reading map)Records a grid of hand-taken meter readings (airflow m/s, PAR, spot temp/RH) over the canopy, drawn as measured markers and used to validate interpolated fields.
  • LiveFitted response model per zoneFor each actuator→zone pair, fits the median response rate (and spread, event count, RMSE) from real on/off edges in history, the "ghost" response curve the twin draws.
  • LiveScenario runnerSteps a per-zone fitted first-order RH/temp balance model through a "tonight" simulation so the operator can preview a setpoint or schedule change before committing it.
  • Live3D twin replayDrag back through time and see the whole twin as it was: zones, fans, relays, lamps, probes and placed sensors, each marked as tracked, recorded or estimated.
  • Live3D twin picture for phonesThe brain cannot draw 3D itself, so the Twin page saves a picture of its own view, timestamped, for phones and viewers who avoid animation.
  • LiveLenses (Kit / Climate / Air / Light / Root / Power / Plants / Alerts)Eight named overlay "lenses" that switch what the 3D twin annotates, climate response chips, power draw, alert banners, plant milestones, etc.
  • LiveDirector (clip recording)One click records a short (≈20 s) tour of the twin scene as it currently is, camera move included, for export.
  • LiveKiosk / screensaver modeFull-screen, read-only twin view for a spare display that auto-cycles the lenses with big live readouts; ?lens= pins one, ?every= sets the cycle time; Escape exits.
  • LiveDay/night lighting layerRenders the scene's lighting state (lit vs dark window) so the twin visually matches the tent's actual photoperiod phase.
  • LiveDesk embedsEmbeds a live twin view inside other desk pages (e.g. Tune Fleet) rather than only the dedicated Twin page.
  • LiveProvenance grammarA consistent visual language across the twin for "measured" vs "modelled" vs "unknown" data, so a viewer can tell which kind of number they're looking at.
  • LiveZone rules on the twinShows the automation rules and decisions that affect a zone right on the twin.
  • PlannedWebXR / VR modeExplored as a Twin v3 design option but explicitly parked, not built.

Alerts and safety

11 live · 1 planned

Sensitivity presets, quiet hours that never silence the failsafe, and a rules engine that fails closed. Acknowledge once and it holds on every screen.

  • LiveAlert sensitivity presetsOne operator choice sets the grow tools' whole alert-threshold set together (runoff, dry-room, etc.), each writing the individual threshold keys so nothing downstream has to change; editing one key by hand marks it "custom".
  • LivePer-alert preferences + quiet hoursPer-alert enable/severity catalogue plus shared quiet hours, stored centrally so every browser sees the same state; quiet hours never silence the emergency failsafe.
  • LiveBrain-owned alert acknowledgementAcks are keyed to the hub's estimated boot time (not browser localStorage), so an ack made on one device holds across every other viewer until the hub actually reboots; acks can carry a snooze expiry.
  • LiveAutomation rules engineOperator-authored trigger-group → action rules (AND/OR condition groups, per-rule time window, debounce, release, per-condition hysteresis), edge-triggered and fail-closed.
  • LiveAutomation rule defaultsSensible debounce/release/hysteresis defaults applied to a newly created rule.
  • LiveFloor flood → alertCurated Zigbee device task: a floor leak sensor raises a flood banner.
  • LiveSmoke / gas / CO hazard alarmsZigbee or Tuya Wi-Fi (smoke_alarm / gas_alarm / co_alarm) alarms bound to hazard roles raise critical detection alerts with no hold; silent-bound warn after 26 h; grow-log on rising edge.
  • LiveSafety cut-off (hazard task)Opt-in hazard_cutoff task parks heater + heat mat and holds plug_light_* off; fans / dehum / hub-dimmed untouched. Settings card can test (no alarm recorded) and release; real alarm during a test takes over; release while alarming → HTTP 409.
  • LiveRunoff-tray leak/sitting alertsPer-pot runoff-tray wet and "sitting-in-water-too-long" alerts (see Root zone).
  • LiveEmergency over-temp + sensor watchdog failsafesHub-firmware-level safety independent of the Pi (see Climate control).
  • LiveSensor-trust stuck/divergent flagsFlags a stuck or peer-divergent sensor as an honesty signal before it can silently drive a bad decision (see Sensors).
  • PlannedProtection against an overloaded brainDesigned, not built: a fix for an open incident where a runaway browser tab floods the brain with requests until it saturates and the hub's own watchdog reboots it.

Energy and power

6 live

Per-device wattage, a local energy estimate with tariff bands, and runtime-hours history. It suggests when to slide a schedule and tells you what it costs.

  • LivePer-device wattageEvery device (lights, fans, and now heater/heat-mat/humidifier/dehumidifier/AC appliance seats) carries a wattage figure, catalog-sourced (read-only, nameplate) or operator-typed.
  • LiveLocal energy estimate + slide suggestionsComputes watts × hours × tariff energy estimates per space and suggests (never auto-applies) schedule slides to save energy.
  • LiveLocal energy learningLearns the grow's own energy-use norm over time and flags outliers against it, without ever auto-applying a schedule change.
  • LiveAU-style tariff bandsPlaceholder time-of-use tariff bands the operator edits in Settings, feeding the energy estimate.
  • LiveSpace energy settingsSettings UI for per-space energy configuration (tariff, wattage overrides).
  • LiveRuntime-hours historyConverts fleet history into per-device runtime-hours, memoized per computed build, as an input to the energy model.

Product libraries

8 live

DSC-KitLib for equipment, DSC-NuteLib for nutrients and CannaLib for strains. Updated from this site, kept on the Pi, never invented.

  • LiveDSC-KitLib, the equipment libraryA library on the Pi of lights (with the maker's PPFD maps and spectra), fans, filters, ducting, tents, climate appliances, pumps, plugs, sensors, controllers and water testers.
  • LiveDSC-NuteLib, the nutrient libraryA library on the Pi of nutrients, additives, feed charts and growing media.
  • LiveLibrary updaterFetches DSC-KitLib and DSC-NuteLib updates from a public list and installs them on the Pi.
  • LiveOlder catalogue fallbackReads the older CannaLib catalogue files when no installed library is present yet, so a kit mid-upgrade keeps working.
  • LiveCannaLib online lookupLooks strains up in the CannaLib service online, and falls back to the copy on the Pi when it cannot be reached.
  • LiveCurated strain list (last fallback)The original hand-curated strain and product list, kept as the last-resort source.
  • LiveCatalog refresh jobPeriodic (boot / 6 h / roster-change) background refresh of strain profiles and bound-fixture catalog records.
  • LiveMaker presets from a matched productSee Sensors/Integrations, offers maker CFM/duct-size/wattage once a device is matched to a KitLib product.

Settings and setup

15 live

Commission a kit, back it up, flash it over USB or OTA, and read a settings manifest that describes itself. A transparency page shows what the brain is doing and why.

  • LiveKit commissioningSetup that starts from the SD image and fills in the kit's identity and first settings.
  • LiveSetup profile export and importSave the brain's grow settings to one file to copy to a second kit or share: modifiers, stage presets, root-steering targets, alerts, automation defaults, journal retention and hub tunables.
  • LiveBackup export/importZips the Pi appliance's ops data for backup/restore.
  • LiveFactory resetTyped-confirm (operator must retype the kit's AP SSID) reset of the brain's own data; writes a backup + raw DB copy first, then drops/recreates every table.
  • LiveNetwork AP/DHCP applyGenerates the host's AP/DHCP config from brain settings and applies it on the Pi host.
  • LiveUSB kit flashFlashes prepared firmware to your devices over USB from the Pi.
  • LiveESPHome OTA / compile jobsOperator-initiated OTA flash / recompile job queue against the fleet, run through the host ESPHome venv.
  • LiveESPHome toolchain managementShows which ESPHome version the Pi has against the latest and the version the firmware needs, and can update it on request. It needs no Home Assistant.
  • LiveUpdate check for the brain and the firmwareCompares the running brain version and each device's firmware with a published release list hosted on our own sites.
  • LiveSelf-describing settingsThe brain describes each setting itself (default, range, unit and who owns it), so the dashboard never hard-codes one.
  • LiveSettings-change journalLogs every brain-side setting write as its own journal trail.
  • LiveSystem transparency pageRead-only host/clock/NTP/failover status page; degrades honestly (unknown, not a guess) when a signal (e.g. timedatectl) isn't available.
  • LivePi diagnostics and power actionsLog tails, adjustable log detail, and reboot and shut-down for the Pi. The dashboard asks you to confirm, and the public demo blocks them.
  • LiveZones / role managementEvery space and room is one object whose *role* (grow/dry/cure/empty) flips in place and drives which bands/desk apply.
  • LiveIngest cadence settingsOperator-facing control of the poll-rate ladder rungs per device.

Local AI

3 live

Optional narrative advice from a local model over Ollama and a soft-calibration wizard. Runs on your hardware, or not at all.

  • LiveOllama narrative for SoftCal / Climate-mode adviceOptional local Ollama call (configurable base URL/model) that turns the SoftCal/Climate-mode advisory into a short narrative; the guardrailed action set behind it is fixed code, never invented by the model.
  • LiveSoftCal soft-calibration wizardAdvice-only "soft calibration" wizard that recommends setpoint nudges from history, with a full session-history log.
  • LiveCannaLib vision extractor (adjacent repo)A separate, LM-Studio-hosted vision model that extracts light-fixture spectra/PPFD data from maker documents; lives in the sibling CannaLib repo, not in DSC-HUB itself.

Public demo / simulator

6 live

A software room simulator with synthetic history, the same brain you would run, and a public demo you can click through right now. Demo mode never touches a camera.

  • LiveDemo mode flagFully isolated software-simulation flag with no LAN/hardware access, gating every hardware-touching code path (cameras, USB flash, power actions, etc.).
  • LiveSoftware room simulatorRuns a labelled synthetic grow-room day (18/6 lamp, thermostat heater, RH-holding dehumidifier, temperature-following exhaust) with no hardware ingest at all, for the public demo.
  • LiveDemo synthetic history backfillBackfills the demo brain's empty recorder with hours of synthetic history so twin replay/response-model/scenario features have something to show.
  • LivePublic brain demo deploymentA separate dsc-brain-demo Docker stack (Unraid Compose Manager) served at brain-demo.plausible-deniability.net through a Cloudflare tunnel, built from an isolated demo folder so it never touches the live CannaLib mounts.
  • LiveDemo mode never captures camerasExplicit rule that demo mode never attempts a camera fetch, since cameras are LAN/USB-only.
  • LiveLive version stamps on this siteThe reference kit reports the versions it runs to this site every 15 minutes, so the stamps you see here are what is running.

Platform

11 live

Raspberry Pi and Docker Compose, an installable web app, an SD image you flash once, and a Pi-native path that does not use Home Assistant.

  • LiveRuns on a Raspberry PiDSC ships as a set of containers for a Raspberry Pi 4 (4 GB or more; Pi 5 has not been tested yet).
  • LivePWA (installable web app)The frontend is installable as a home-screen PWA with its own manifest and icon set.
  • LiveUpdate manifest (brain + firmware)One published list the kit checks for available brain and firmware updates.
  • LiveHome Assistant removal / Pi-native pathThe product's control/compute stack was migrated off Home Assistant onto native ESPHome + a Pi-native brain; DSC does not use Home Assistant.
  • LiveTouch control panelAn optional wall panel on a low-cost ESP32 touchscreen (DSC-CONTROL) with tabs, night dimming, screen saver and idle states, and on-screen Manual Takeover and Full Auto controls.
  • LiveSD image builderScripts that build a complete SD card image (firmware, brain and containers) for a new kit.
  • LiveTwo ways to update the softwareOne update changes only the dashboard and needs no brain restart. The other covers the brain, settings, containers and firmware. Each keeps a timestamped rollback copy.
  • LiveRemovable-media automountudev rule + systemd unit that automounts a USB stick under /media with nosuid,nodev,noexec, feeding the camera/journal media storage feature.
  • LiveFleet flash / recovery scriptsA family of PowerShell/bash scripts to flash or recover the hub, Sonoff seats and the whole fleet over LAN or a fallback path when normal OTA can't reach a device.
  • LiveEthernet + AP network hardeningA dedicated hub-eth0 service and net-policy unit that brings up wired networking and enforces the kit's network policy on boot.
  • LiveSoak / verify toolingScripts that run an extended soak test and verify-brain health check against a live Pi before/after a deploy.

Not in the list? What we are building next is under Coming next, labelled just as plainly. Gear has its own page: supported gear. Status is as of the build date. In testing means it is present but still proving itself; planned means designed and not built. These are the same three words as on the status page.

175

features live today, of 182 listed

16

areas, climate to cure jars

3,113

verified products in the equipment library, DSC-KitLib 0.11.0

8

things in the works, below

Root zone · crop steering

Crop steering: read the dryback, know the phase

Crop steering means steering a plant by how far its pot dries out between waterings. DSC reads that dryback from the 7-in-1 probe in each pot, works out which phase the pot is in, and charts it against the limits for that phase.

Dryback per pot

The probe's moisture reading gives a dryback percentage after each watering. If a probe is faulty, the pot shows no phase rather than a guess.

Phase P0 to P3

From the dryback and whether the lights are on, DSC names the phase of each pot. A manual override switches the phase off when you want to steer by hand.

Limits you can change

Each phase has dryback limits and moisture targets with defaults you can edit. At harvest, the run report says whether dryback was held. See the Root desk and Root settings.

The phase and the dryback chart are live today. Closing the loop with a calibrated watering pump is planned, and is not switched on.

Where the numbers come from

Every number says where it came from

DSC labels which source gave each number. The strain catalogue behind it is CannaLib; the equipment and nutrient libraries are DSC's own. Counts below are dated, and each has its unit.

143,611

catalogue entries (strains) in CannaLib, counted at api.cannalib.org on 30 Sep 2026

7,358,743

evidence-backed data points, each credited to one of 1,194 sources

3,113

verified products in 58 device classes, DSC-KitLib 0.11.0

The strain catalogue is looked up online, strains the kit has already looked up stay on the kit, and a small curated set works with no network. DSC uses a strain's flowering time to work out the stage and the harvest window, and says which source gave each number. The room's climate targets come from the stage, not the strain.

Read more at CannaLib. Building your own tool? The CannaLib API has free keys and paid plans. See every supported device for the product library.

Climate numbers are worked out the way the brain works them out: the VPD calculator runs that formula, and how DSC holds humidity in a grow room says what the hub and the plugs do about it.

Coming next

What we are working on now

None of this is in the list above, because none of it is finished. Each item says how far along it really is. Alpha testers see these first, and the gear they own decides the order.

In the works

Planned

Infrared and RF remote control

The air conditioner, heater or dehumidifier that only ever had a handheld remote becomes something DSC can drive. The code catalogue is already built: 1,025 code sets across 451 brands. Next is wiring it into the brain so a cheap IR blaster is just another actuator.

Planned

The brain takes the wheel

Today the hub's firmware drives the room. The brain's planner is being tested alongside it: it works out what it would do and records it, but it does not control anything yet. When that testing holds up, the brain will take over one kind of device at a time, and the hub stays on as the failsafe. See what runs today.

Planned

More gear, recognised on pairing

DSC-KitLib grows with every release, and it grows from what alpha testers actually own. Name a device on the sign-up form and it goes on the list to verify.

Planned

DSC-NuteLib feed charts, deeper

The nutrient library becomes its own catalogue beside DSC-KitLib: more lines, feed charts by stage and week, and the mix maths done for your reservoir size.

Designed, not built yet

Planned

Closed-loop irrigation

Crop steering already reads dryback per pot. The next step closes the loop: a calibrated pump doses by the second, shots land in the right phase, and the runoff tray confirms the result.

Exploring

Planned

Brand-agnostic accessories

Wireless climate sensors, a CO₂ regulator, a PPFD lighting controller, set-and-forget timelapse cameras, canopy air sensors, a local trend box for long-term logging and the Nutrient Nurse kit for head, medium and runoff readings. Every one optional, none of them tied to a brand.

Planned

A purpose-built board

Same firmware, same brand-agnosticism, less soldering. It sits beside the DIY build and never replaces it.

Planned

Walk the room in VR

The 3D twin already replays any moment of the grow. A headset view of the same room is parked until the core is on general release.

Not on general release yet

Help us help you.

DSC is in alpha. The hub controls climate and lights today, it runs on real plants, and we check every build for safety and results before it goes wider. The next alpha build goes to everyone who signs up, free, the day it is released. That is the whole deal. Questions first? Ask away.

We help you

Sign up and a download link lands in your inbox: dsc-hub-9.9.1-arm64.img.xz and its .sha256 file, for a Raspberry Pi 4 (4 GB or more; Pi 5 has not been tested yet). Raspberry Pi Imager and balenaEtcher read the .xz file directly; no need to unpack it. Flash it and boot it. The brain and the dashboard are on the card, the card makes its own keys the first time it starts, and setup builds the firmware for your devices on your Pi (it needs a wired internet connection the first time).

Every alpha build is free, this one included, and yours to keep. No account, no subscription, no licence check. Keep the image and you keep the software. No mailing list. Release pricing for later versions has not been decided. How larger systems are licensed is not decided yet, and alpha testers will hear first.

You help us

A name and an email are all we need. Everything else on the form is optional: what kind of space you run, what your gear talks today, which brands you own, and the one thing you have not found anywhere yet.

Each answer tells us which rooms, gear and growers to build for next. The brands you name are the brands we go and verify.