dumbtv
dumbtv takes the ads, screen tracking and update nags out of your Fire TV over ADB. No root, none of your apps touched, every step can be undone. Free and open source.
Nimstead Assure finds what's exposed, fixes it safely and gives your auditor proof they can check themselves. Source available. Self-hosted.
SecurityPython · TypeScriptGitHub @NimsteadOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Loading comments.
Checking sign-in status.
Find what's vulnerable, fix it safely with automatic rollback, and prove it to an auditor. Self-hosted vulnerability management for Linux, Windows and SBOMs.
Taken from the repository README
Loading the full README.
Read the full README ↗Nimstead Assure scans your Linux and Windows machines and your applications' dependencies for known vulnerabilities, tells you which few upgrades clear the most real risk, can apply them for you with automatic rollback, and keeps a tamper-evident record your auditor can check without asking us.
[!NOTE] Early access (v0.5). Everything below works and is proven on real systems, but expect rough edges and breaking changes before 1.0. Until a release is promoted to the stable channel (none has been yet), set
NIMSTEAD_UPDATE_CHANNEL=preview(orbetaonce one exists) in.envso your server hears about updates. Run it on test machines first; automated fixes stay limited to machines you enrol as test machines until you turn them on for production. Tell us what breaks: open an issue or email [email protected].
deploy/update.sh installs it with a database backup and automatic rollback. Machines that stop reporting are flagged.Every screenshot here is from a real run (sandbox/demo.py): five disposable Linux machines (Ubuntu 24.04, Debian 13, AlmaLinux 9, Alpine 3.21) running the real agent, real vulnerability feeds, an application SBOM, and real fixes on those machines.
| A fix verified, a fix rolled back when it broke a service, and one the dry run refused | Why a finding matched, and why it's ranked there |
|---|---|
| Every machine, its ring and its health checks | Controls an auditor can check | Light and dark, down to phone width |
|---|---|---|
You need Docker with Compose v2.
git clone https://github.com/Nimstead/assure.git && cd assure
cp .env.example .env
Set POSTGRES_PASSWORD in .env to a long random value, then:
docker compose up -d
Open http://localhost:8000, create an account and follow Add your first machine. The install guide covers HTTPS, enrolling Linux and Windows machines, turning on automated fixes, upgrades, backups and running without Docker.
flowchart LR
subgraph Hosts
A["Agent<br/>(Linux / Windows)"]
end
CI["CI pipeline"] -- "SBOM" --> API
A -- "inventory every 6 h" --> API["Assure server"]
API -- "approved fix jobs" --> A
F["Feeds hourly<br/>OSV · NVD · KEV · EPSS · MSRC"] --> API
API --> DB[("PostgreSQL")]
API --> L["Hash-chained ledger<br/>+ signed checkpoints"]
L --> P["Ed25519 evidence pack<br/>(verifies offline)"]
API --> UI["Web UI"]
API -. "TCP + TLS checks<br/>(DNS-proven owned hosts)" .-> X["Internet-facing hosts"]
Not just unit tests. Each of these ran end to end in a disposable VM or WSL distro; the scripts and logs are in sandbox/ and the details in STATUS.md.
| Platform | Detect | Fix verified by inventory | Automatic rollback |
|---|---|---|---|
| Debian 13 · Ubuntu 24.04 | ✓ | ✓ apt | ✓ after a real service failure |
| AlmaLinux 9 | ✓ | ✓ dnf | ✓ after a real service failure |
| Alpine 3.21 | ✓ | ✓ apk | ✓ after an injected failure |
| openSUSE Leap 16.0 | ✓ | ✓ zypper | ✓ after a real service failure; snapper also undoes install-script side effects |
| Windows Server 2025 | ✓ | ✓ cumulative update as SYSTEM | ✓ after an injected failure (DISM removal); permanent updates refused up front |
| Windows 11 Pro 26H2 | ✓ | ✓ cumulative update as SYSTEM | ✓ after an injected failure (DISM removal); every package the update brings checked up front |
Plus real Keycloak SSO, DNS, SMTP and webhook integrations, Vault and S3 object-lock key storage, the Docker Compose install, and 1,000-host performance runs on SQLite and PostgreSQL 17. 731 API tests run on both databases in CI.
The full, honest list is in STATUS.md. The ones you're most likely to meet:
| Install | Docker Compose, HTTPS, enrolling machines, automated fixes, upgrades, backups |
| Configuration | Every environment variable |
| STATUS.md | What is proven, how, and what isn't |
| DECISIONS.md | Why things are the way they are, including the threat model |
| CHANGELOG.md | What changed in each release |
| CONTRIBUTING.md | Development setup, tests and how we work |
| SECURITY.md | How to report a vulnerability |
| Directory | What it is |
|---|---|
api/ | The server: FastAPI and SQLAlchemy, feeds, matching, risk, remediation, evidence |
agent/ | The agent: one standard-library Python file for Linux (apt, dnf, zypper, apk) and Windows |
web/ | The UI: React and TanStack, served by the API once built |
sandbox/ | Real-host and real-service proofs in disposable WSL distros and VMs |
docs/ | Install and configuration guides |
Functional Source License 1.1, Apache 2.0 future licence (FSL-1.1-ALv2). You can use, modify and self-host Nimstead Assure for anything except offering a product or service that competes with it. Two years after each release, that release becomes available under Apache 2.0.