chore: initial release v0.8.2

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-07 21:45:30 +02:00
co-authored by Claude Sonnet 4.6
commit 94f5803141
31 changed files with 645 additions and 0 deletions
+25
View File
@@ -0,0 +1,25 @@
**/.classpath
**/.dockerignore
**/.env
**/.git
**/.gitignore
**/.project
**/.settings
**/.toolstarget
**/.vs
**/.vscode
**/*.*proj.user
**/*.dbmdl
**/*.jfm
**/bin
**/charts
**/docker-compose*
**/compose*
**/Dockerfile*
**/node_modules
**/npm-debug.log
**/obj
**/secrets.dev.yaml
**/values.dev.yaml
LICENSE
README.md
+7
View File
@@ -0,0 +1,7 @@
# Docker
*.tar.gz
*.log
# Editor-Dateien
.vscode/
*.swp
+22
View File
@@ -0,0 +1,22 @@
# Changelog
## 0.8.2
- Add-on-Optionen werden jetzt korrekt über `bashio::config` ausgelesen (statt fehlerhafter Env-Var-Substitution)
- `--power`-Flag entfernt (wird von FAH 8 nicht unterstützt, Leistung über Web-Interface steuerbar)
- Neues Add-on-Icon
- README ausführlich erweitert (Installation, Konfiguration, Troubleshooting)
- DOCS.md bereinigt (veraltete `power`-Option entfernt)
## 0.8.1
- Dockerfile auf HAOS-kompatible Build-Basis umgestellt (`ARG BUILD_FROM`)
- FAH-Download-Logik korrigiert (arch-spezifisch, kein fehlerhafter "debian"-Filter)
- s6-overlay: LinuxServer-spezifische Abhängigkeiten entfernt (`init-config-end`, `init-config`, `init-services`)
- s6-overlay: Abhängigkeitskette korrigiert (`base → config → video → service`)
- Service-Skript: Syntax-Fehler behoben, alle CLI-Argumente (user, team, passkey, power) ergänzt
- Env-Variable `USER` → `FAH_USER` (Konflikt mit Shell-Variable vermieden)
- Architektur-Support auf `amd64` und `aarch64` beschränkt (FAH 8 unterstützt kein armhf/armv7)
- Dokumentation vollständig überarbeitet
## 0.8.0
- Aktualisiert auf Folding@home 8.4
- Initiale Version des Forks
+140
View File
@@ -0,0 +1,140 @@
# Folding@home Add-on Dokumentation
## Über dieses Add-on
Dieses Add-on führt den [Folding@home](https://foldingathome.org/) Client (Version 8.x) als
Home Assistant Add-on aus. Folding@home ist ein verteiltes Rechenprojekt, das die Rechenleistung
deines Computers nutzt, um Proteinfaltungssimulationen für medizinische Forschung durchzuführen
(z. B. Alzheimer, Krebs, COVID-19).
---
## Installation
1. Öffne Home Assistant und gehe zu:
**Einstellungen → Add-ons → Add-on Store**
2. Klicke oben rechts auf **⋮ → Repositories**
3. Füge folgende URL hinzu:
```
https://gitea.bitfire.work/retr0/dont-stop-folding
```
4. Schließe den Dialog – das Add-on „Folding@home" erscheint nun im Store
5. Klicke auf das Add-on und dann auf **Installieren**
6. Konfiguriere die gewünschten Optionen (siehe unten)
7. Klicke auf **Starten**
---
## Konfiguration
### Optionen
| Option | Typ | Standard | Beschreibung |
|-----------------|--------|-----------|--------------|
| `user` | string | _(leer)_ | Dein Folding@home-Benutzername. Wird für die Statistikseite verwendet. |
| `team` | string | `247478` | Team-ID. `247478` ist das offizielle Home Assistant Team. |
| `passkey` | string | _(leer)_ | Dein persönlicher Passkey von foldingathome.org. Aktiviert Bonus-Punkte. |
| `account_token` | string | _(leer)_ | Token für das neue FAH 8 Online-Konto (von foldingathome.org). |
| `machine_name` | string | _(leer)_ | Anzeigename dieser Maschine im FAH-Online-Konto. |
### Beispielkonfiguration
```yaml
user: "mein_benutzername"
team: "247478"
passkey: "abc123..."
```
Mit FAH 8 Online-Konto:
```yaml
account_token: "eyJ..."
machine_name: "homeassistant"
```
> Die Leistungsstufe lässt sich nach dem Start im Web-Interface unter `http://<ip>:7396` anpassen.
---
## Web-Interface
Nach dem Start ist die Folding@home Web-UI erreichbar unter:
```
http://<homeassistant-ip>:7396
```
Dort kannst du:
- Aktuelle Work Units und Fortschritt einsehen
- Die Leistungsstufe manuell anpassen
- Folding pausieren oder fortsetzen
- Statistiken abrufen
---
## Zwei Kontosysteme
Folding@home bietet zwei Möglichkeiten, Punkte zu sammeln:
### Klassisch (user + passkey)
Das bewährte System – erstelle einen Account auf [foldingathome.org](https://foldingathome.org/),
trage Benutzernamen und optional einen Passkey ein.
### FAH 8 Online-Konto (account_token)
Das neue System seit Version 8. Erstelle ein Konto auf
[foldingathome.org](https://foldingathome.org/), generiere einen Token und trage
ihn unter `account_token` ein. `machine_name` gibt der Maschine einen erkennbaren Namen
in deinem Konto-Dashboard.
> Hinweis: Beide Systeme können nicht gleichzeitig aktiv sein. Wenn `account_token`
> gesetzt ist, wird er bevorzugt. Ohne beides wird anonym gefaltet.
---
## Datenspeicherung
Der FAH Client speichert seine Konfiguration und Work-Unit-Daten im
Home Assistant Konfigurationsverzeichnis unter:
```
/config/ (innerhalb des Containers)
```
Die Daten bleiben bei Neustarts und Updates des Add-ons erhalten.
---
## Unterstützte Architekturen
| Architektur | Unterstützt |
|-------------|-------------|
| `amd64` | ✓ |
| `aarch64` | ✓ |
| `armhf` | ✗ (vom FAH 8 Client nicht unterstützt) |
| `armv7` | ✗ (vom FAH 8 Client nicht unterstützt) |
---
## Problembehandlung
### Add-on startet nicht
- Prüfe im Log-Tab des Add-ons auf Fehlermeldungen
- Stelle sicher, dass Port `7396` nicht von einem anderen Dienst belegt ist
### Web-Interface nicht erreichbar
- Warte 30–60 Sekunden nach dem Start – der FAH Client benötigt etwas Zeit zum Initialisieren
- Prüfe, ob das Add-on im Status „Läuft" angezeigt wird
### Keine Punkte / kein Fortschritt
- Der FAH Server weist Work Units zu – bei geringer Auslastung der Server kann es zu Wartezeiten kommen
- Prüfe im Web-Interface unter `http://<ip>:7396`, ob aktiv gefaltet wird
- Stelle sicher, dass `user` und `team` korrekt eingetragen sind
### „No appropriate assignment" im Log (Raspberry Pi / ARM)
Meldungen wie `HTTP_SERVICE_UNAVAILABLE: {"error":"No appropriate assignment"}` sind auf ARM-Geräten ohne GPU (z. B. Raspberry Pi) normal. FAH 8 priorisiert GPU- und x86-Clients – für reine ARM-CPUs sind schlicht weniger Arbeitspakete verfügbar.
Der Client wiederholt die Anfrage automatisch mit exponentiell steigendem Abstand. Es ist keine Aktion erforderlich – nach einigen Stunden wird in der Regel eine Work Unit zugeteilt. Das Add-on muss **nicht** neu gestartet werden.
### Anonym falten
Wenn weder `user` noch `account_token` gesetzt sind, werden Beiträge unter dem
anonymen Benutzer gesammelt. Die Leistung ist identisch, nur die Statistiken werden
keinem Konto zugeordnet.
+61
View File
@@ -0,0 +1,61 @@
# syntax=docker/dockerfile:1
ARG BUILD_FROM
FROM $BUILD_FROM
ARG BUILD_DATE
ARG BUILD_REF
ARG BUILD_VERSION
ARG BUILD_ARCH
LABEL \
io.hass.name="Folding@home" \
io.hass.description="Run Folding@home to contribute to scientific research" \
io.hass.arch="${BUILD_ARCH}" \
io.hass.type="addon" \
io.hass.version=${BUILD_VERSION} \
maintainer="retr0"
# Add needed NVIDIA environment variables for container toolkit
ENV NVIDIA_DRIVER_CAPABILITIES="compute,video,utility"
# Prevent interactive prompts during package installation
ENV DEBIAN_FRONTEND="noninteractive"
RUN \
echo "**** install runtime packages ****" && \
apt-get update && \
apt-get install -y --no-install-recommends \
bzip2 \
curl \
jq \
libexpat1 \
mosquitto-clients \
netcat-openbsd && \
echo "**** install foldingathome ****" && \
if [ "${BUILD_ARCH}" = "aarch64" ]; then \
FAH_WORKER="debian-stable-arm64"; \
else \
FAH_WORKER="debian-10-64bit"; \
fi && \
DOWNLOAD_PATH=$(curl -fsSL "https://download.foldingathome.org/releases/public/fah-client/meta.json" | \
jq -r --arg worker "${FAH_WORKER}" \
'.[] | select(.worker == $worker and .mode == "release" and (.package | endswith(".tar.bz2"))) | .package' \
| head -1) && \
echo "Downloading FAH client: ${DOWNLOAD_PATH}" && \
curl -fsSL "https://download.foldingathome.org/releases/public/fah-client/${DOWNLOAD_PATH}" \
-o /tmp/fah.tar.bz2 && \
mkdir -p /app && \
tar xf /tmp/fah.tar.bz2 -C /app --strip-components=1 && \
echo "**** cleanup ****" && \
apt-get clean && \
rm -rf \
/tmp/* \
/var/lib/apt/lists/* \
/var/tmp/* \
/var/log/*
# Add local files
COPY root/ /
EXPOSE 7396
+5
View File
@@ -0,0 +1,5 @@
MIT License
Copyright (c) 2020-2025 Retr0
Permission is hereby granted, free of charge, to any person obtaining a copy...
+4
View File
@@ -0,0 +1,4 @@
build_from:
amd64: ghcr.io/hassio-addons/debian-base/amd64:7.3.1
aarch64: ghcr.io/hassio-addons/debian-base/aarch64:7.3.1
squash: false
+29
View File
@@ -0,0 +1,29 @@
name: Folding@home
version: 0.8.2
slug: foldingathome
description: Run Folding@home to contribute to scientific research
url: https://gitea.bitfire.work/retr0/dont-stop-folding
arch:
- amd64
- aarch64
init: false
ports:
7396/tcp: 7396
ports_description:
7396/tcp: Folding@home Web Interface
map:
- config:rw
services:
- mqtt:want
options:
user: ""
team: "247478"
passkey: ""
account_token: ""
machine_name: ""
schema:
user: str?
team: str
passkey: str?
account_token: str?
machine_name: str?
+6
View File
@@ -0,0 +1,6 @@
services:
dontstopfolding:
image: dontstopfolding
build:
context: .
dockerfile: ./Dockerfile
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

+175
View File
@@ -0,0 +1,175 @@
# dont-stop-folding
![dont-stop-folding](icon.png)
> Home Assistant Add-on für [Folding@home](https://foldingathome.org/) – nutze die Rechenleistung
> deines Home Assistant Servers, um zur wissenschaftlichen Forschung beizutragen.
---
## Was ist Folding@home?
[Folding@home](https://foldingathome.org/) ist ein verteiltes Rechenprojekt der Washington University in St. Louis.
Es simuliert die Faltung von Proteinen – also den Prozess, durch den sich Eiweißmoleküle zu ihrer
dreidimensionalen Funktionsform falten. Fehler in diesem Prozess stehen im Zusammenhang mit
Krankheiten wie Alzheimer, Parkinson, Krebs und COVID-19.
Jeder Computer, der am Projekt teilnimmt, berechnet kleine Simulationsaufgaben (sogenannte *Work Units*)
und sendet die Ergebnisse an die Forschungsserver zurück. Mit diesem Add-on läuft der Folding@home
Client direkt auf deinem Home Assistant Server – vollständig im Hintergrund, ohne separate Hardware.
---
## Features
- **Folding@home Client 8.x** – aktuelle Version mit verbesserter Effizienz
- **Web-Interface** auf Port 7396 – Fortschritt, Statistiken und Steuerung direkt im Browser
- **Zwei Kontosysteme** – klassisch (Benutzername + Passkey) oder FAH 8 Online-Konto (Account Token)
- **Team-Support** – standardmäßig im Home Assistant Community Team (247478)
- **Persistenz** – Work-Unit-Daten und Konfiguration bleiben bei Updates erhalten
- **Unterstützte Architekturen:** `amd64`, `aarch64`
---
## Installation
1. Öffne Home Assistant und navigiere zu:
**Einstellungen → Add-ons → Add-on Store**
2. Klicke oben rechts auf **⋮ → Repositories** und füge folgende URL hinzu:
```
https://gitea.bitfire.work/retr0/dont-stop-folding
```
3. Schließe den Dialog – das Add-on **Folding@home** erscheint nun im Store.
4. Klicke auf das Add-on und dann auf **Installieren**.
5. Wechsle in den Tab **Konfiguration** und trage deine Daten ein (siehe unten).
6. Klicke auf **Starten**.
---
## Konfiguration
### Optionen
| Option | Typ | Standard | Beschreibung |
|-----------------|--------|-----------|--------------|
| `user` | string | _(leer)_ | Dein Folding@home-Benutzername für die Statistikseite. |
| `team` | string | `247478` | Team-ID. `247478` ist das offizielle Home Assistant Community Team. |
| `passkey` | string | _(leer)_ | Persönlicher Passkey von foldingathome.org. Aktiviert Bonus-Punkte (Quick Return Bonus). |
| `account_token` | string | _(leer)_ | Token für das FAH 8 Online-Konto. Empfohlen für neue Nutzer. |
| `machine_name` | string | _(leer)_ | Anzeigename dieser Maschine im FAH-Konto-Dashboard. |
### Beispielkonfigurationen
**Klassisches Konto (user + passkey):**
```yaml
user: "mein_benutzername"
team: "247478"
passkey: "abc123..."
```
**FAH 8 Online-Konto:**
```yaml
account_token: "eyJ..."
machine_name: "homeassistant"
```
**Anonym falten** (keine Einträge nötig – einfach leer lassen):
```yaml
team: "247478"
```
> **Hinweis:** `account_token` und `user`/`passkey` schließen sich gegenseitig aus.
> Wenn `account_token` gesetzt ist, wird er bevorzugt. Ohne beides wird anonym gefaltet.
---
## Web-Interface
Nach dem Start ist die Folding@home Web-UI erreichbar unter:
```
http://<homeassistant-ip>:7396
```
Über das Web-Interface kannst du:
- Aktuelle Work Units und deren Fortschritt einsehen
- Folding pausieren und fortsetzen
- Die Leistungsstufe (light / medium / full) anpassen
- CPU- und GPU-Slots konfigurieren
- Statistiken und deinen Beitrag abrufen
---
## Kontosysteme im Vergleich
Folding@home bietet zwei Möglichkeiten, Beiträge einem Konto zuzuordnen:
### Klassisch – Benutzername + Passkey
Das bewährte System. Erstelle einen Account auf [foldingathome.org](https://foldingathome.org/),
trage deinen Benutzernamen unter `user` ein. Mit einem optionalen `passkey` werden
Bonus-Punkte freigeschaltet (Quick Return Bonus), die vergeben werden, wenn Work Units
pünktlich abgegeben werden.
### FAH 8 Online-Konto – Account Token
Das neue System ab Version 8. Nach der Registrierung auf
[foldingathome.org](https://foldingathome.org/) generierst du einen Token im
Web-Dashboard und trägst ihn unter `account_token` ein. Optional kannst du unter
`machine_name` einen Namen vergeben, damit du mehrere Maschinen im Dashboard unterscheiden kannst.
---
## Unterstützte Architekturen
| Architektur | Status |
|-------------|--------|
| `amd64` | ✅ Unterstützt |
| `aarch64` | ✅ Unterstützt (z. B. Raspberry Pi 4/5 mit 64-Bit-OS) |
| `armhf` | ❌ Nicht unterstützt (FAH 8 Client nicht verfügbar) |
| `armv7` | ❌ Nicht unterstützt (FAH 8 Client nicht verfügbar) |
---
## Datenspeicherung
Der FAH Client speichert Konfiguration und Work-Unit-Daten persistent im
Home Assistant Konfigurationsverzeichnis. Die Daten bleiben bei Neustarts
und Add-on-Updates vollständig erhalten.
---
## Problembehandlung
### Add-on startet nicht
- Prüfe den **Log-Tab** des Add-ons auf Fehlermeldungen.
- Stelle sicher, dass Port `7396` nicht von einem anderen Dienst belegt ist.
### Web-Interface nicht erreichbar
- Warte 30–60 Sekunden nach dem Start – der FAH Client benötigt etwas Zeit zur Initialisierung.
- Prüfe, ob das Add-on im Status **Läuft** angezeigt wird.
### Kein Fortschritt / keine Work Units
- Der FAH-Server weist Work Units zu. Bei hoher Auslastung der Forschungsserver
kann es zu Wartezeiten kommen – das ist normal.
- Prüfe im Web-Interface, ob der Client verbunden ist.
- Stelle sicher, dass `user` und `team` korrekt eingetragen sind.
- Für FAH 8: Ohne gültigen `account_token` werden keine Work Units zugeteilt.
Anonymes Falten funktioniert in FAH 8 nur eingeschränkt.
### Beiträge erscheinen nicht in der Statistik
- Statistiken werden verzögert aktualisiert (bis zu mehrere Stunden).
- Stelle sicher, dass `user` korrekt geschrieben ist (Groß-/Kleinschreibung zählt).
- Mit einem `passkey` werden Punkte zuverlässiger zugeordnet.
---
## Lizenz
MIT License – siehe [LICENSE.txt](LICENSE.txt)
+5
View File
@@ -0,0 +1,5 @@
{
"name": "dont-stop-folding",
"url": "https://gitea.bitfire.work/retr0/dont-stop-folding",
"maintainer": "retr0"
}
+1
View File
@@ -0,0 +1 @@
libnvidia-opencl.so.1
@@ -0,0 +1,6 @@
#!/usr/bin/with-contenv bash
# shellcheck shell=bash
echo "**** setting up config directory ****"
mkdir -p /config
chmod 755 /config
@@ -0,0 +1 @@
oneshot
@@ -0,0 +1 @@
/etc/s6-overlay/s6-rc.d/init-foldingathome-config/run
+10
View File
@@ -0,0 +1,10 @@
#!/usr/bin/with-contenv bash
# shellcheck shell=bash
# Make GPU devices accessible if present (running as root in HAOS)
FILES=$(find /dev/dri /dev/dvb -type c -print 2>/dev/null)
for i in $FILES; do
echo "**** found GPU device: ${i} ****"
chmod a+rw "${i}" 2>/dev/null || true
done
@@ -0,0 +1 @@
oneshot
@@ -0,0 +1 @@
/etc/s6-overlay/s6-rc.d/init-foldingathome-video/run
+99
View File
@@ -0,0 +1,99 @@
#!/usr/bin/with-contenv bashio
# shellcheck shell=bash
FAH_API="http://localhost:7396/api"
POLL_INTERVAL=30
STATE_TOPIC="foldingathome/state"
DISCOVERY_PREFIX="homeassistant"
# Abort cleanly if MQTT service is not available
if ! bashio::services.mqtt; then
bashio::log.info "MQTT not available — skipping sensor publishing. Install the Mosquitto broker add-on to enable HA sensors."
exec sleep infinity
fi
MQTT_HOST=$(bashio::services.mqtt 'host')
MQTT_PORT=$(bashio::services.mqtt 'port')
MQTT_USER=$(bashio::services.mqtt 'username')
MQTT_PASS=$(bashio::services.mqtt 'password')
UNIQUE_ID="foldingathome_$(hostname | tr -cd '[:alnum:]_')"
mqtt_publish() {
mosquitto_pub \
-h "$MQTT_HOST" -p "$MQTT_PORT" \
-u "$MQTT_USER" -P "$MQTT_PASS" \
-t "$1" -m "$2" -r -q 1
}
publish_discovery() {
local device
device=$(jq -n \
--arg id "$UNIQUE_ID" \
'{identifiers: [$id], name: "Folding@home", model: "FAH 8", manufacturer: "foldingathome.org"}')
declare -A sensors
sensors=(
["status"]='{"name":"Folding@home Status","value_template":"{{ value_json.status }}","icon":"mdi:dna"}'
["ppd"]='{"name":"Folding@home PPD","value_template":"{{ value_json.ppd }}","unit_of_measurement":"PPD","icon":"mdi:speedometer","state_class":"measurement"}'
["progress"]='{"name":"Folding@home Progress","value_template":"{{ value_json.progress }}","unit_of_measurement":"%","icon":"mdi:progress-clock","state_class":"measurement"}'
["credit"]='{"name":"Folding@home Credit","value_template":"{{ value_json.credit }}","unit_of_measurement":"points","icon":"mdi:star","state_class":"total_increasing"}'
)
for key in "${!sensors[@]}"; do
local config
config=$(echo "${sensors[$key]}" | jq \
--arg uid "${UNIQUE_ID}_${key}" \
--arg topic "$STATE_TOPIC" \
--argjson device "$device" \
'. + {unique_id: $uid, state_topic: $topic, device: $device}')
mqtt_publish "${DISCOVERY_PREFIX}/sensor/${UNIQUE_ID}_${key}/config" "$config"
done
bashio::log.info "HA sensor discovery published (${#sensors[@]} sensors)"
}
# Wait for FAH API to become ready
bashio::log.info "Waiting for Folding@home API on port 7396..."
until curl -sf "${FAH_API}/info" > /dev/null 2>&1; do
sleep 5
done
bashio::log.info "Folding@home API ready — starting MQTT sensor publisher"
publish_discovery
while true; do
UNITS=$(curl -sf "${FAH_API}/units" 2>/dev/null || echo "[]")
UNIT_COUNT=$(echo "$UNITS" | jq 'length')
if [ "$UNIT_COUNT" -gt 0 ]; then
RAW_STATE=$(echo "$UNITS" | jq -r '.[0].state // "unknown"')
case "$RAW_STATE" in
RUN) STATUS="Running" ;;
PAUSE) STATUS="Paused" ;;
FINISH) STATUS="Finishing" ;;
ASSIGN) STATUS="Assigning" ;;
DOWNLOAD) STATUS="Downloading" ;;
SEND) STATUS="Sending" ;;
*) STATUS="Idle" ;;
esac
PPD=$(echo "$UNITS" | jq '[.[].ppd // 0] | add // 0 | round')
PROGRESS=$(echo "$UNITS" | jq '.[0].progress // 0 | . * 100 | round')
CREDIT=$(echo "$UNITS" | jq '[.[].credit // 0] | add // 0 | round')
else
STATUS="Idle"
PPD=0
PROGRESS=0
CREDIT=0
fi
PAYLOAD=$(jq -n \
--arg status "$STATUS" \
--argjson ppd "$PPD" \
--argjson progress "$PROGRESS" \
--argjson credit "$CREDIT" \
'{status: $status, ppd: $ppd, progress: $progress, credit: $credit}')
mqtt_publish "$STATE_TOPIC" "$PAYLOAD"
sleep "$POLL_INTERVAL"
done
@@ -0,0 +1 @@
longrun
+44
View File
@@ -0,0 +1,44 @@
#!/usr/bin/with-contenv bashio
# shellcheck shell=bash
declare -a args
# Network: bind to all interfaces, allow all connections
args+=(--http-addresses "0.0.0.0:7396")
args+=(--allow "0/0")
# FAH account credentials
FAH_USER=$(bashio::config 'user')
TEAM=$(bashio::config 'team')
PASSKEY=$(bashio::config 'passkey')
ACCOUNT_TOKEN=$(bashio::config 'account_token')
MACHINE_NAME=$(bashio::config 'machine_name')
if bashio::config.has_value 'user'; then
args+=(--user "${FAH_USER}")
fi
if bashio::config.has_value 'team'; then
args+=(--team "${TEAM}")
fi
if bashio::config.has_value 'passkey'; then
args+=(--passkey "${PASSKEY}")
fi
if bashio::config.has_value 'account_token'; then
args+=(--account-token "${ACCOUNT_TOKEN}")
if bashio::config.has_value 'machine_name'; then
args+=(--machine-name "${MACHINE_NAME}")
fi
fi
if ! bashio::config.has_value 'user' && ! bashio::config.has_value 'account_token'; then
bashio::log.info "No user or account_token set — folding anonymously."
fi
# Run from /config so fah-client stores its data there
mkdir -p /config
cd /config || exit 1
exec /app/fah-client "${args[@]}"
@@ -0,0 +1 @@
longrun