Getting Started

June 21, 2026 · View on GitHub

Prerequisites

  • Node.js >= 20 or Docker
  • An MQTT broker (e.g. Mosquitto) — optional; she also works without MQTT if you only use Matter or sheDB

Installation

sudo npm install -g smart-home-engine
sudo she --install
sudo systemctl start smart-home-engine

she --install creates a dedicated she system user and installs + enables the systemd unit. All state (scripts, database, config) is kept in /var/lib/she/. Once the service is running, open http://localhost:8080

Docker

docker build -t she https://github.com/hobbyquaker/she.git
docker run -d \
  --name she \
  -p 8080:8080 \
  -v she-data:/var/lib/she \
  she

All state (scripts, database, config) is stored in the she-data volume. Open http://localhost:8080

Web UI

The web UI is served on port 8080 by default. It provides:

TabDescription
ScriptsMonaco-based editor: create, edit, save, rename, and delete .js scripts
MQTTBrowse all known topics with current values and timestamps; publish messages
BrokerManage Mosquitto config, listeners, TLS, dynsec users and roles (must be enabled — see below)
MatterCommission and manage paired Matter devices (must be enabled — see below)
DBInspect and edit sheDB documents and views
LogsLive structured log stream
ConfigAll daemon settings — MQTT broker settings, authentication, ...

Note: The Broker and Matter tabs are hidden by default. Enable them in Config → Mosquitto and Config → Matter controller respectively. The DB tab is visible by default and can be hidden the same way.

Your first script

Create a new script in the Scripts tab and paste:

she.info('hello from she!');

she.mqtt.sub('home/#', (topic, val) => {
    she.info(topic, '->', val);
});

Scripts are hot-reloaded automatically — saving a file in the editor restarts only that script, without restarting the entire daemon.

Git integration

The Scripts editor has built-in git support (commit, push, history). To use it you need to set up a git repository in the scripts data directory yourself — she does not do this automatically.

systemd installation

sudo -u she git -C /var/lib/she init
sudo -u she git -C /var/lib/she remote add origin git@github.com:you/she-scripts.git
sudo -u she git -C /var/lib/she config user.email "you@example.com"
sudo -u she git -C /var/lib/she config user.name "Your Name"

Note: All git commands on /var/lib/she must be run as sudo -u she — the daemon runs as the she user and git operations will fail with permission errors otherwise. SSH keys for push access should be placed in /var/lib/she/.ssh/.

Docker

# open a shell into the running container
docker exec -it she bash

# inside the container
git -C /var/lib/she init
git -C /var/lib/she remote add origin git@github.com:you/she-scripts.git
git -C /var/lib/she config user.email "you@example.com"
git -C /var/lib/she config user.name "Your Name"

Git runs as root inside the container. Place SSH keys in the volume at /var/lib/she/.ssh/ (mode 700 for the directory, 600 for key files).

Next steps