bifrost

bifrost

Docker app from Others' Repository

Overview

Self-hosted smart-home control hub. It brings your supported devices — direct integrations plus anything from Home Assistant — under one web UI and REST API, organizes them into rooms, saves scenes you can restore in one tap, and lets you control everything by voice or AI assistants through the embedded MCP server. It aims to keep device connections live and show each device's real state. Runs as a single binary with one SQLite file; pair Hue from the UI via the bridge link button. Full supported-device list: https://others-git.github.io/bifrost/providers/ Runs on the host network so device auto-detect works: discovery uses SSDP/eISCP broadcast, multicast, and a local-subnet sweep, none of which cross a bridged container's NAT. The web UI is on port 3000 (set by Bind Address below); change that variable to use a different port.

Bifrost

Bifrost

A self-hosted smart-home hub — control your devices from one web UI, a REST API, and voice.

Latest release CI License Docs Container image Unraid Community Apps


Bifrost unifies your smart-home devices behind a single, fast, self-hosted control surface — a web dashboard, a REST API, an embedded assistant (MCP) server, and natural-language voice. It's built around reliability: every device connection is owned by a state machine with reconnection, backoff, and live push to the browser, and a read that can't reach a device falls back to cached state rather than failing.

Documentation

📖 Full docs: https://others-git.github.io/bifrost/

  • Overview — what Bifrost is and how it's built
  • Setup guide — install, configuration, first-run, voice, the wall tablet
  • Providers — Hue, Govee, LIFX, Onkyo/Integra, Sonos, Home Assistant
  • Public API — the Bearer-key /api/v1 REST surface
  • MCP server — the embedded assistant tool catalogue

Quick start (Docker)

mkdir bifrost && cd bifrost
curl -fsSLO https://raw.githubusercontent.com/others-git/bifrost/main/docker-compose.yml
test -f .env || echo "BIFROST_SECRET=$(openssl rand -hex 32)" > .env
docker compose up -d

Then open http://<host>:3000. Keep BIFROST_SECRET identical across upgrades — it encrypts your provider credentials at rest. See the install guide for bare-binary builds and configuration.

On Unraid? Bifrost is in Community Applications — search Bifrost on the Apps tab and apply the template.

Companion repos

AI usage disclosure

Bifrost is built with heavy use of AI assistance — primarily Claude Code. AI contributed to code, tests, and documentation throughout. Every change is gated by the same CI as any other (cargo fmt, cargo clippy -D warnings, the full test suite, and the frontend build), and AI-assisted commits carry a Co-Authored-By: Claude trailer.

License

MIT

Install Bifrost on Unraid in a few clicks.

Find Bifrost in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for Bifrost Review the template variables and paths Click Install

Categories

Related apps

Explore more like this

Explore all

Details

Repository
ghcr.io/others-git/bifrost:latest
Last Updated2026-07-03
First Seen2026-06-18

Runtime arguments

Web UI
http://[IP]:3000/
Network
host
Shell
sh
Privileged
false

Template configuration

Data DirectoryPathrw

Directory for the SQLite database (bifrost.db). All state lives here: password, providers (credentials encrypted), lights, scenes, groups, floor plans.

Target
/data
Default
/mnt/user/appdata/bifrost/data
Value
/mnt/user/appdata/bifrost/data
Secret KeyVariable

REQUIRED. Encrypts provider credentials at rest (AES-256-GCM). Generate one with: openssl rand -hex 32. Changing it later orphans stored provider credentials (you would re-add providers).

Target
BIFROST_SECRET
Database URLVariable

SQLite connection string. Leave at the default unless you move the Data Directory mapping.

Target
DATABASE_URL
Default
sqlite:///data/bifrost.db
Value
sqlite:///data/bifrost.db
Bind AddressVariable

Address and port the app listens on. With host networking this is the actual host port — open http://[server-ip]:3000 after install. If you change the port here (e.g. 0.0.0.0:8080), browse to that port instead; the WebUI shortcut is fixed at 3000.

Target
BIND_ADDR
Default
0.0.0.0:3000
Value
0.0.0.0:3000
Log LevelVariable

Log filter, e.g. bifrost=info or bifrost=debug.

Target
RUST_LOG
Default
bifrost=info
Value
bifrost=info