---
title: "Concepts"
description: "The GlassHome mental model. Dash, Hub, addon, widget. What each piece is, where it runs, and how they connect."
canonical: https://glasshome.app/docs/dash/concepts
section: "Getting started"
updated: 2026-10-08
---
# Concepts

A handful of terms come up across the docs. Skim this once and the rest reads faster.

## The pieces

### Dash (glasshome-dash)

The app you actually interact with. Runs on your hardware (Pi, NUC, NAS, HAOS). Its server holds your Home Assistant login and talks to HA over WebSocket on your behalf; your browser only ever talks to that server. Contains one or more dashboards (named screens you configure).

### Hub (this site)

Cloud service at glasshome.app. Hosts the widget registry, your account, and organizations. Optional for using Dash.

### Addon

A packaging of Dash for Home Assistant OS or Supervised. Installed via the HA Add-on Store. Same app, easier install.

### Widget

A piece of a dashboard, bound to one or more HA entities. Built-in or installed from Hub. SolidJS component + Zod config.

## Where things run

Dash does not need Hub to run. Hub is only required if you want to install community widgets or publish your own.

## Glossary

### Everyday terms

- **Dashboard.** A named screen inside Dash. You can have multiple dashboards, each with its own layout and widget set.
- **Breakpoint.** A screen size with its own layout, picked by width: Phone (4 columns), Tablet (8), Desktop (12), and Wide screen (16 columns, from 1480 pixels wide). Each dashboard stores one layout per breakpoint. See [Layouts](/docs/dash/layouts).
- **Remote address.** A web address you reach Dash at from outside your home, through your own VPN, proxy, or tunnel. Declared in Settings. See [Remote Access](/docs/dash/remote-access).

### Publishing terms

- **Scope.** Publishing namespace. Your personal scope is your username (`@username`, auto-assigned at signup and editable in your account settings), and an [organization](/docs/hub/organizations)'s scope is its slug (`@org-slug`). Widget IDs look like `@scope/widget-name`.
- **Manifest.** The `manifest.json` (or inline metadata in `defineWidget`) that describes a widget: name, icon, size limits, SDK version.
- **configVersion.** Integer on a widget manifest. Bumped when the config shape changes in a breaking way. Drives [migrations](/docs/widgets/widget-migrations).
- **Trust badge.** `Official` (verified, installs without prompt) or `Community` (user-published, asks for consent). See [Publishing](/docs/widgets/widget-publishing).

## Data flow

1. Browser loads Dash from your local server (e.g. `http://192.168.1.x:3123`).
2. The GlassHome server opens a WebSocket connection to Home Assistant for live entity state and relays it to your browser. See [How GlassHome Connects](/docs/dash/how-glasshome-connects).
3. When you add a community widget, Dash fetches its bundle from Hub's CDN once, then caches it locally.
4. Dash config (layouts, themes, connections) is stored in a local SQLite database. No sync to Hub.

> **What never leaves your network:** Entity state, your layouts, your HA URL, your devices. The GlassHome server talks to HA directly, on your behalf. Hub never sees any of it.

## Hub vs. Dash accounts

You sign into Hub (this site) to publish widgets or hold your license. Dash keeps its own accounts for the people in your home, on your GlassHome server. Each person signs in with their Home Assistant login, with a name and password, or through an invite link an admin sent them. Home Assistant sign-in uses HA's own OAuth.