This guide focuses on common setup/runtime failures and fast resolution paths.
Last verified: April 5, 2026.
Symptom:
- bootstrap exits with
cargo is not installed
Fix:
./bootstrap.sh --install-rustOr install from https://rustup.rs/.
Symptom:
- build fails due to compiler or
pkg-configissues
Fix:
./bootstrap.sh --install-system-depsSymptoms:
cargo build --releaseis killed (signal: 9, OOM killer, orcannot allocate memory)- Build crashes after adding swap because disk space runs out
Why this happens:
- Runtime memory (<5MB for common operations) is not the same as compile-time memory.
- Full source build can require 2 GB RAM + swap and 6+ GB free disk.
- Enabling swap on a tiny disk can avoid RAM OOM but still fail due to disk exhaustion.
Preferred path for constrained machines:
./bootstrap.sh --prefer-prebuiltBinary-only mode (no source fallback):
./bootstrap.sh --prebuilt-onlyIf you must compile from source on constrained hosts:
- Add swap only if you also have enough free disk for both swap + build output.
- Limit cargo parallelism:
CARGO_BUILD_JOBS=1 cargo build --release --locked- Reduce heavy features when Matrix is not required:
cargo build --release --locked --features hardware- Cross-compile on a stronger machine and copy the binary to the target host.
Symptoms:
cargo check/cargo buildappears stuck atChecking gloamyfor a long time- repeated
Blocking waiting for file lock on package cacheorbuild directory
Why this happens in Gloamy:
- Matrix E2EE stack (
matrix-sdk,ruma,vodozemac) is large and expensive to type-check. - TLS + crypto native build scripts (
aws-lc-sys,ring) add noticeable compile time. rusqlitewith bundled SQLite compiles C code locally.- Running multiple cargo jobs/worktrees in parallel causes lock contention.
Fast checks:
cargo check --timings
cargo tree -dThe timing report is written to target/cargo-timings/cargo-timing.html.
Faster local iteration (when Matrix channel is not needed):
cargo checkThis uses the lean default feature set and can significantly reduce compile time.
To build with Matrix support explicitly enabled:
cargo check --features channel-matrixTo build with Matrix + Lark + hardware support:
cargo check --features hardware,channel-matrix,channel-larkLock-contention mitigation:
pgrep -af "cargo (check|build|test)|cargo check|cargo build|cargo test"Stop unrelated cargo jobs before running your own build.
Symptom:
- install succeeds but shell cannot find
gloamy
Fix:
export PATH="$HOME/.cargo/bin:$PATH"
which gloamyPersist in your shell profile if needed.
Symptoms:
gloamy agentfails withHostAgent runtime perception failed- interactive CLI turns stop before tool execution on macOS
Why this happens:
- the HostAgent runtime treats perception as a hard dependency
- missing Accessibility or Screen Recording permission is surfaced as a turn failure instead of silently degrading to an empty screen state
Fix:
- Grant Accessibility permission to the app hosting the CLI session (for example Terminal, iTerm, Warp, VS Code, or Cursor)
- Grant Screen Recording permission if screenshot capture is also blocked
- Restart the affected app after changing macOS privacy settings
- Re-run the same
gloamy agentcommand
Symptoms:
gloamy agentfails withHostAgent runtime perception failed- interactive CLI turns stop before tool execution
Why this happens:
- HostAgent runtime perception no longer accepts empty runtime state fallback
- screenshot capture and widget-tree runtime context must produce at least one usable signal
- missing screenshot backend binaries or blocked desktop session permissions can leave runtime signals empty
Fix:
- On Linux, install at least one screenshot backend available in PATH (
gnome-screenshot,scrot, orimportfrom ImageMagick) - Ensure the process has desktop session access (for example X11/Wayland permissions in the active user session)
- On Windows, run in an interactive desktop session with PowerShell available
- Re-run
gloamy agentafter confirming host desktop capture is permitted
Symptoms:
- runtime returns
Blocked by runtime policy: call perception_capture...
Why this happens:
- coordinate clicks now require a successful
perception_capturepreflight withinclude_widget_tree=trueandinclude_ocr=true - partial or degraded perception output no longer satisfies the click preflight
Fix:
- Call
perception_capturewith bothinclude_widget_tree=trueandinclude_ocr=true - Confirm the tool output reports both modalities as completed
- Retry the
mac_automation click_ataction only after the successful preflight
Symptoms:
- runtime returns
OCR extraction failed: ... perception_capturediagnostics showocr.completed = false
Checks:
which tesseract
tesseract --versionFix:
- Install Tesseract if it is missing from the host
- If the runtime needs a non-default language pack or tessdata path, pass the
ocrobject in the tool call:
{
"include_widget_tree": true,
"include_ocr": true,
"ocr": {
"language": "eng",
"psm": 11,
"oem": 1
}
}- Set
ocr.tessdata_dirwhen traineddata files live outside the system default location
Checks:
gloamy status
gloamy doctorVerify ~/.gloamy/config.toml:
[gateway].host(default127.0.0.1)[gateway].port(default42617)allow_public_bindonly when intentionally exposing LAN/public interfaces
Expected behavior:
- the legacy browser dashboard has been removed
gloamy gatewaynow serves webhook, API, and WebSocket endpoints for desktop and external clients
What to do:
- use the web app for the primary UI
- use gateway routes only for integrations, automation, health checks, and API traffic
Checks:
- Ensure pairing completed (
/pairflow) - Ensure bearer token is current
- Re-run diagnostics:
gloamy doctorCause:
- multiple pollers using same bot token
Fix:
- keep only one active runtime for that token
- stop extra
gloamy daemon/gloamy channel startprocesses
Checks:
gloamy channel doctorThen verify channel-specific credentials + allowlist fields in config.
Checks:
gloamy service statusRecovery:
gloamy service stop
gloamy service startLinux logs:
journalctl --user -u gloamy.service -fBoth still work:
curl -fsSL https://raw.githubusercontent.com/iBz-04/gloamy/main/scripts/bootstrap.sh | bash
curl -fsSL https://raw.githubusercontent.com/iBz-04/gloamy/main/scripts/install.sh | bashinstall.sh is a compatibility entry and forwards/falls back to bootstrap behavior.
Collect and include these outputs when filing an issue:
gloamy --version
gloamy status
gloamy doctor
gloamy channel doctorAlso include OS, install method, and sanitized config snippets (no secrets).