diff --git a/website/docs/guides/tips.md b/website/docs/guides/tips.md index af4b8fce4..4cdf11941 100644 --- a/website/docs/guides/tips.md +++ b/website/docs/guides/tips.md @@ -181,6 +181,25 @@ TERMINAL_BACKEND=docker TERMINAL_DOCKER_IMAGE=hermes-sandbox:latest ``` +### Avoid Windows Encoding Pitfalls + +On Windows, some default encodings (such as `cp125x`) cannot represent all Unicode characters, which can cause `UnicodeEncodeError` when writing files in tests or scripts. + +- Prefer opening files with an explicit UTF-8 encoding: + +```python +with open("results.txt", "w", encoding="utf-8") as f: + f.write("✓ All good\n") +``` + +- In PowerShell, you can also switch the current session to UTF-8 for console and native command output: + +```powershell +$OutputEncoding = [Console]::OutputEncoding = [Text.UTF8Encoding]::new($false) +``` + +This keeps PowerShell and child processes on UTF-8 and helps avoid Windows-only failures. + ### Review Before Choosing "Always" When the agent triggers a dangerous command approval (`rm -rf`, `DROP TABLE`, etc.), you get four options: **once**, **session**, **always**, **deny**. Think carefully before choosing "always" — it permanently allowlists that pattern. Start with "session" until you're comfortable. diff --git a/website/docs/user-guide/configuration.md b/website/docs/user-guide/configuration.md index 1de46644b..c5d6d45a7 100644 --- a/website/docs/user-guide/configuration.md +++ b/website/docs/user-guide/configuration.md @@ -436,6 +436,39 @@ terminal: container_persistent: true # Persist filesystem across sessions ``` +### Common Terminal Backend Issues + +If terminal commands fail immediately or the terminal tool is reported as disabled, check the following: + +- **Local backend** + - No special requirements. This is the safest default when you are just getting started. + +- **Docker backend** + - Ensure Docker Desktop (or the Docker daemon) is installed and running. + - Hermes needs to be able to find the `docker` CLI. It checks your `$PATH` first and also probes common Docker Desktop install locations on macOS. Run: + ```bash + docker version + ``` + If this fails, fix your Docker installation or switch back to the local backend: + ```bash + hermes config set terminal.backend local + ``` + +- **SSH backend** + - Both `TERMINAL_SSH_HOST` and `TERMINAL_SSH_USER` must be set, for example: + ```bash + export TERMINAL_ENV=ssh + export TERMINAL_SSH_HOST=my-server.example.com + export TERMINAL_SSH_USER=ubuntu + ``` + - If either value is missing, Hermes will log a clear error and refuse to use the SSH backend. + +- **Modal backend** + - You need either a `MODAL_TOKEN_ID` environment variable or a `~/.modal.toml` config file. + - If neither is present, the backend check fails and Hermes will report that the Modal backend is not available. + +When in doubt, set `terminal.backend` back to `local` and verify that commands run there first. + ### Docker Volume Mounts When using the Docker backend, `docker_volumes` lets you share host directories with the container. Each entry uses standard Docker `-v` syntax: `host_path:container_path[:options]`.