@@ -19,13 +19,22 @@ BAUDBOT_HOME="/home/baudbot_agent"
1919PASS=0
2020FAIL=0
2121WARN=0
22+ IS_ROOT=0
23+ if [ " $( id -u) " -eq 0 ]; then
24+ IS_ROOT=1
25+ fi
2226
2327pass () { echo " ✓ $1 " ; PASS=$(( PASS + 1 )) ; }
2428fail () { echo " ✗ $1 " ; FAIL=$(( FAIL + 1 )) ; }
2529warn () { echo " ⚠ $1 " ; WARN=$(( WARN + 1 )) ; }
2630
2731echo " Baudbot Doctor"
2832echo " "
33+ if [ " $IS_ROOT " -ne 1 ]; then
34+ echo " ℹ Running without root: some checks may be inconclusive."
35+ echo " For full accuracy, run: sudo baudbot doctor"
36+ echo " "
37+ fi
2938
3039# ── User ─────────────────────────────────────────────────────────────────────
3140
@@ -135,7 +144,11 @@ if [ -f "$ENV_FILE" ]; then
135144 fi
136145 done
137146else
138- fail " .env not found at $ENV_FILE "
147+ if [ " $IS_ROOT " -ne 1 ] && [ -d " $BAUDBOT_HOME /.config" ]; then
148+ warn " cannot verify agent .env as non-root (run: sudo baudbot doctor)"
149+ else
150+ fail " .env not found at $ENV_FILE "
151+ fi
139152fi
140153
141154# ── Runtime ──────────────────────────────────────────────────────────────────
@@ -146,26 +159,42 @@ echo "Runtime:"
146159if [ -f " $BAUDBOT_HOME /runtime/start.sh" ]; then
147160 pass " start.sh deployed"
148161else
149- fail " start.sh not found (run: baudbot deploy)"
162+ if [ " $IS_ROOT " -ne 1 ] && [ -d " $BAUDBOT_HOME /runtime" ]; then
163+ warn " cannot verify start.sh as non-root (run: sudo baudbot doctor)"
164+ else
165+ fail " start.sh not found (run: baudbot deploy)"
166+ fi
150167fi
151168
152169if [ -d " $BAUDBOT_HOME /.pi/agent/extensions" ]; then
153170 EXT_COUNT=$( find " $BAUDBOT_HOME /.pi/agent/extensions" -maxdepth 1 -name ' *.ts' -o -name ' *.mjs' 2> /dev/null | wc -l)
154171 pass " extensions deployed ($EXT_COUNT files)"
155172else
156- fail " extensions not deployed (run: baudbot deploy)"
173+ if [ " $IS_ROOT " -ne 1 ] && [ -d " $BAUDBOT_HOME " ]; then
174+ warn " cannot verify extensions as non-root (run: sudo baudbot doctor)"
175+ else
176+ fail " extensions not deployed (run: baudbot deploy)"
177+ fi
157178fi
158179
159180if [ -d " $BAUDBOT_HOME /.pi/agent/skills" ]; then
160181 pass " skills deployed"
161182else
162- fail " skills not deployed (run: baudbot deploy)"
183+ if [ " $IS_ROOT " -ne 1 ] && [ -d " $BAUDBOT_HOME " ]; then
184+ warn " cannot verify skills as non-root (run: sudo baudbot doctor)"
185+ else
186+ fail " skills not deployed (run: baudbot deploy)"
187+ fi
163188fi
164189
165190if [ -d " $BAUDBOT_HOME /runtime/slack-bridge" ] && [ -f " $BAUDBOT_HOME /runtime/slack-bridge/bridge.mjs" ]; then
166191 pass " slack bridge deployed"
167192else
168- fail " slack bridge not deployed (run: baudbot deploy)"
193+ if [ " $IS_ROOT " -ne 1 ] && [ -d " $BAUDBOT_HOME /runtime" ]; then
194+ warn " cannot verify slack bridge files as non-root (run: sudo baudbot doctor)"
195+ else
196+ fail " slack bridge not deployed (run: baudbot deploy)"
197+ fi
169198fi
170199
171200# ── Security ─────────────────────────────────────────────────────────────────
@@ -178,7 +207,11 @@ if command -v iptables &>/dev/null && iptables -w -L BAUDBOT_OUTPUT -n &>/dev/nu
178207 RULE_COUNT=$( iptables -w -L BAUDBOT_OUTPUT -n 2> /dev/null | tail -n +3 | wc -l)
179208 pass " firewall active ($RULE_COUNT rules)"
180209else
181- warn " firewall not active (run: baudbot setup)"
210+ if command -v iptables & > /dev/null && [ " $IS_ROOT " -ne 1 ]; then
211+ warn " cannot verify firewall as non-root (run: sudo baudbot doctor)"
212+ else
213+ warn " firewall not active (run: baudbot setup)"
214+ fi
182215fi
183216
184217# /proc hidepid
@@ -214,7 +247,11 @@ if [ -f "$TOOL_GUARD" ]; then
214247 fi
215248 fi
216249else
217- fail " tool-guard.ts not found"
250+ if [ " $IS_ROOT " -ne 1 ] && [ -d " $BAUDBOT_HOME " ]; then
251+ warn " cannot verify tool-guard.ts as non-root (run: sudo baudbot doctor)"
252+ else
253+ fail " tool-guard.ts not found"
254+ fi
218255fi
219256
220257# ── Agent Status ─────────────────────────────────────────────────────────────
@@ -223,13 +260,20 @@ echo ""
223260echo " Agent:"
224261
225262if command -v systemctl & > /dev/null && [ -d /run/systemd/system ]; then
226- if systemctl is-enabled baudbot & > /dev/null 2>&1 ; then
263+ enabled_state=$( systemctl is-enabled baudbot 2>&1 || true)
264+ if [ " $enabled_state " = " enabled" ]; then
227265 pass " systemd unit enabled"
228- if systemctl is-active baudbot & > /dev/null 2>&1 ; then
266+
267+ active_state=$( systemctl is-active baudbot 2>&1 || true)
268+ if [ " $active_state " = " active" ]; then
229269 pass " agent is running (systemd)"
270+ elif [ " $IS_ROOT " -ne 1 ] && echo " $active_state " | grep -qiE ' access denied|not authorized|interactive authentication|required' ; then
271+ warn " cannot verify agent runtime as non-root (run: sudo baudbot doctor)"
230272 else
231273 warn " agent is not running"
232274 fi
275+ elif [ " $IS_ROOT " -ne 1 ] && echo " $enabled_state " | grep -qiE ' access denied|not authorized|interactive authentication|required' ; then
276+ warn " cannot verify systemd unit state as non-root (run: sudo baudbot doctor)"
233277 else
234278 warn " systemd unit not installed (run: baudbot setup)"
235279 fi
0 commit comments