Getting Started
# Getting Started
Audience: new users and developers who want a working relurpish workspace. Purpose: from zero to a first completed agent turn. Prerequisites: none; this is the starting doc.
# Prerequisites
| Requirement | Version / notes |
|---|---|
| Go | 1.25+ |
| Container runtime | Docker; plus gVisor runsc for the default gvisor sandbox backend (the docker backend needs Docker alone) |
| Model backend | Ollama (default, endpoint http://localhost:11434), LM Studio (http://localhost:1234), any OpenAI-compatible endpoint, or the built-in offline scripted model |
| OS | Linux or macOS (amd64 / arm64) |
| git | Recommended in the workspace; the diff and verify tooling works best on a clean repository |
# 1. Build
From the repository root:
go build -o relurpish ./app/relurpish
go build -o relurplint ./app/relurplintIn sandboxed or locked-down machines, repo-local Go caches help:
export GOMODCACHE=$PWD/.gomodcache
export GOCACHE=$PWD/.gocacheYou can also run without installing: go run ./app/relurpish ....
# 2. Prepare a model backend
The default provider is Ollama with the model gemma4:e4b:
ollama serve # in its own terminal, if not installed as a service
ollama pull gemma4:e4bOther backends:
- LM Studio: start the local server (default
http://localhost:1234). - OpenAI-compatible endpoint: set the endpoint in
relurpify_cfg/model/provider/openai_compatible.provider.yamland exportRELURPIFY_LLM_API_KEY. - Offline: no backend needed; see Running offline .
Thinking models are supported; the shipped gemma4 profile arms bounded
decision repair for malformed model output.
# 3. Initialize a workspace
A workspace is any project directory you want the agent to work in.
mkdir -p ~/code/my-demo && cd ~/code/my-demo
git init # recommended
/path/to/relurpish doctorOn an empty workspace, doctor materializes the starter configuration into
relurpify_cfg/:
workspace.yaml— provider, model, sandbox, logging, posturesmodel/provider/andmodel/profiles/— endpoints and per-model behaviorsecurity/— sandbox, shell blacklist, tool policies, ingestion rulestools/— 99 tool manifestsprompts/— the prompt corpuseuclo/— shipped thoughtrecipes plusfamilies.yaml
Doctor never overwrites your edits; --fix explicitly (re)materializes, and
--yes applies fixes without prompting.
--set-provider <name> switches the provider and re-runs the diagnosis.
Two informational warnings are normal on a healthy machine: runner: missing
(the app spawns the runner on first chat) and runtime_image: degraded (set
image_digest in relurpify_cfg/security/sandbox.policy.yaml to pin the
container image).
# 4. Configure the model
Edit relurpify_cfg/workspace.yaml:
model:
provider: ollama # ollama | lmstudio | openai_compatible | offline
name: gemma4:e4b # any model your backend servesThe full tree is documented in Configuration
.
The --inference-model CLI flag only sets a backend default; the workspace
model configuration governs agent turns.
# 5. Run
/path/to/relurpish chatDoctor is the readiness surface; run it any time:
/path/to/relurpish doctor # human-readable report
/path/to/relurpish status # script-friendly diagnostics (--format json)status exits non-zero when the workspace is degraded, so it works as a CI probe.
# Verify the installation
relurpish doctorends withResult: ready.relurpish chatopens with a Postures banner, e.g.Postures — approvals: governed; intent selection: deterministic.- Type a read-only ask, for example “list the files in this repository and summarize what it is”. The turn completes without approvals because it performs no writes.
# Environment variables
Parsed only by the configuration boundary; precedence is CLI flag > environment > workspace config > built-in default.
| Variable | Required | Default | Description |
|---|---|---|---|
RELURPIFY_WORKSPACE |
no | current directory | Default workspace root |
RELURPIFY_MODEL_PROVIDER |
no | ollama |
Override the provider |
RELURPIFY_MODEL_NAME |
no | workspace config (gemma4:e4b) |
Override the model |
RELURPIFY_SANDBOX_BACKEND |
no | gvisor |
gvisor or docker |
RELURPIFY_OLLAMA_HOST |
no | http://localhost:11434 |
Ollama endpoint |
RELURPIFY_LLM_API_KEY |
yes for openai_compatible |
none | The only secret; never put it in config files |
RELURPIFY_STRICT |
no | unset | 1/true/yes/on turns missing workspace defaults into load errors; see below |
RELURPIFY_LOG_LEVEL |
no | none | Sets the runtime recording mode; despite the name it does not change log verbosity |
RELURPIFY_REDUCE_MOTION |
no | unset | Any non-empty value enables reduced-motion rendering |
EDITOR |
no | system default | Editor used by UI edit actions |
XDG_DATA_HOME |
no | ~/.local/share |
Shared data root (~/.local/share/relurpify) |
RELURPIFY_STRICT details: five workspace.yaml keys have built-in defaults
(paths.state_dir, logging.level, logging.format, audit.retention_days,
telemetry.enabled).
Unset or 0/false/no/off, missing keys are filled and logged.
1/true/yes/on, a workspace.yaml missing any of them fails loading and
names the keys.
Any other value is a boot error.
# Running offline
The offline provider is a deterministic scripted model that exercises tool
dispatch, streaming, and compilation without a backend, Docker, or network:
relurpish doctor --offline --fix
relurpish chat --offlineIt is intended for plumbing checks and CI, not for real coding work.
# Troubleshooting
| Symptom | Cause and fix |
|---|---|
| UI opens locked on the Doctor screen | A required dependency is missing (sandbox toolchain, workspace). Fix what the Doctor tab lists, then run /doctor in the UI to re-check |
model backend not reachable |
Start ollama serve (or your provider); doctor shows per-provider health and hints |
Turn fails with react decision unparseable |
The model produced no parsable decision; /retry in the UI. If it happens often, switch models in relurpify_cfg/workspace.yaml |
Turn failed with capability ... blocked: input schema invalid |
A recipe step invoked a capability without required inputs; check the recipe’s do/on clause (RECIPE_DSL
) |
New recipe not listed in /recipe |
Recipes load once at boot; restart relurpish. /recipe lists skipped files with reasons |
| Config load error naming defaulted keys | You set RELURPIFY_STRICT but workspace.yaml omits defaultable keys; set them or unset the variable |
| Boot error about an unrecognized boolean | A RELURPIFY_* boolean variable has a typo; only 1/true/yes/on and 0/false/no/off are accepted |
| Doctor warns about low disk space | The workspace volume is below 256 MB free; the runtime needs headroom for state and artifacts |
Sandbox warnings at boot (unpinned image) |
Informational; pin security.sandbox.image_digest for a reproducible sandbox |
# Where to go next
- Relurpish guide — daily use: commands, approvals, recipes.
- Configuration
— every file in
relurpify_cfg/. - Recipe DSL — author your own workflows.
- Architecture — how the system works under the hood.