Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,9 +73,9 @@ When a change introduces new config fields, CLI flags, subcommands, or user-visi
|------|----------------|
| `README.md` | Features list, CLI reference table, Configuration section |
| `docs/configuration.md` | Config field reference (top-level table, field section, variant table) |
| `skills/veld-config/SKILL.md` | Agent-facing config reference |
| `skills/veld-usage/SKILL.md` | Agent-facing CLI reference |
| `schema/v1/veld.schema.json` | JSON Schema (usually updated in code, but verify) |
| `skills/veld/SKILL.md` | Agent-facing skill (quick reference, gotchas) |
| `skills/veld/reference/config.md` | Agent-facing config reference |
| `schema/v2/veld.schema.json` | JSON Schema for v2 configs (probes, recovery, skip_if) |
| `website/llms-full.txt` | LLM-facing docs (if applicable, see `website/AGENTS.md`) |

If the change is purely internal (refactor, bugfix with no new surface area), this checklist does not apply.
Expand Down
9 changes: 5 additions & 4 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion PRD.md
Original file line number Diff line number Diff line change
Expand Up @@ -724,7 +724,7 @@ No cross-compilation until v1 is stable. No Tauri. No GTK. No npm in CI.
"local": {
"type": "command",
"script": "./scripts/clone-db.sh",
"verify": "./scripts/verify-db.sh",
"skip_if": "./scripts/verify-db.sh",
"outputs": ["DATABASE_URL"],
"sensitive_outputs": ["DATABASE_URL"]
},
Expand Down
14 changes: 8 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ No port numbers. No manual wiring. Just clean, stable, human-readable URLs.
- **No port numbers** — work with stable HTTPS URLs instead of `localhost:3847`
- **Dependency graph** — resolves node dependencies, parallelizes startup, reverse-order teardown
- **TLS by default** — Caddy's internal CA handles TLS termination, auto-trusted during setup
- **Health checks** — two-phase checks (TCP port + HTTP endpoint) before marking services healthy
- **Health checks** — readiness probes (two-phase: TCP port + HTTP/command) gate startup; liveness probes detect failures after startup (e.g., dropped SSH tunnels)
- **Automatic recovery** — when liveness probes detect failure, the environment is automatically restarted (configurable failure threshold and max recovery attempts)
- **Multiple variants** — same node, different behaviors (local server, Docker, remote URL)
- **Named runs** — multiple environments coexist; re-running by name is idempotent
- **Setup / teardown** — project-level lifecycle steps that gate startup (check Docker, create networks) and clean up after stop
Expand All @@ -26,6 +27,7 @@ No port numbers. No manual wiring. Just clean, stable, human-readable URLs.
- **Structured output** — all commands support `--json` for scripting and CI
- **Browser dashboard** — management UI at `https://veld.localhost` with service health, logs, search, stop/restart
- **Client-side logs** — captures browser `console.log/warn/error`, exceptions, and promise rejections; view with `veld logs --source client`
- **Internal logs** — liveness probe outcomes (with stderr), recovery decisions, health state transitions; view with `veld logs --source internal`

## Install

Expand Down Expand Up @@ -72,8 +74,8 @@ cargo build --release

```json
{
"$schema": "https://veld.oss.life.li/schema/v1/veld.schema.json",
"schemaVersion": "1",
"$schema": "https://veld.oss.life.li/schema/v2/veld.schema.json",
"schemaVersion": "2",
"name": "myproject",
"url_template": "{service}.{run}.{project}.localhost",
"nodes": {
Expand All @@ -83,7 +85,7 @@ cargo build --release
"local": {
"type": "start_server",
"command": "npm run dev -- --port ${veld.port}",
"health_check": { "type": "http", "path": "/health", "timeout_seconds": 30 }
"probes": { "readiness": { "type": "http", "path": "/health", "timeout_seconds": 30 } }
}
}
},
Expand All @@ -93,7 +95,7 @@ cargo build --release
"local": {
"type": "start_server",
"command": "npm run dev -- --port ${veld.port}",
"health_check": { "type": "http", "path": "/", "timeout_seconds": 30 },
"probes": { "readiness": { "type": "http", "path": "/", "timeout_seconds": 30 } },
"depends_on": { "backend": "local" },
"env": { "NEXT_PUBLIC_API_URL": "${nodes.backend.url}" }
}
Expand Down Expand Up @@ -152,7 +154,7 @@ veld stop --name dev
### Step types

- **`start_server`** — long-running process. Veld allocates a port (`${veld.port}`), starts the process, and runs health checks.
- **`command`** — runs a command to completion. Can emit outputs by writing `key=value` lines to `$VELD_OUTPUT_FILE` (preferred) or via `VELD_OUTPUT key=value` on stdout (legacy, discouraged). Optional `verify` command for idempotency.
- **`command`** — runs a command to completion. Can emit outputs by writing `key=value` lines to `$VELD_OUTPUT_FILE` (preferred) or via `VELD_OUTPUT key=value` on stdout (legacy, discouraged). Optional `skip_if` command for idempotency.

### Setup & teardown

Expand Down
Loading
Loading