Skip to content

Add interactive config wizard and fix docs#7

Merged
cyrenei merged 4 commits intomainfrom
feat/configure-wizard
Apr 19, 2026
Merged

Add interactive config wizard and fix docs#7
cyrenei merged 4 commits intomainfrom
feat/configure-wizard

Conversation

@cyrenei
Copy link
Copy Markdown
Owner

@cyrenei cyrenei commented Apr 18, 2026

Summary

  • Adds configure.sh, an interactive config wizard that walks users through generating arbiter.toml instead of requiring manual TOML editing
  • install.sh now offers to run the wizard after binary install
  • Fixes deploy/arbiter.toml trust_level casing (uppercase Verified/Trusted → lowercase) that caused startup crash
  • Fixes wrong auth header in deploy docs and missing fields in example curl commands in quickstart

Ported from the upstream working tree.

Test plan

  • Patch applies cleanly to main
  • configure.sh --non-interactive --output test.toml runs without error and produces a file
  • Generated TOML parses as valid TOML (python3 -c "import tomllib; tomllib.load(...)")
  • configure.sh --help prints usage
  • trust_level values in deploy/arbiter.toml now use lowercase (verified, trusted)
  • End-to-end: generate config, start arbiter, register an agent via the updated curl examples

🤖 Generated with Claude Code

configure.sh walks users through generating arbiter.toml interactively
instead of requiring manual toml editing. install.sh now offers to run
it after binary install. fixes deploy/arbiter.toml trust_level casing
that caused startup crash, wrong auth header in deploy docs, and missing
fields in example curl commands.
@cyrenei
Copy link
Copy Markdown
Owner Author

cyrenei commented Apr 18, 2026

E2E test complete — full generate config → start arbiter → register agent flow verified.

Steps run:

  1. cargo build --release -p arbiter-mcp-firewallFinished release profile in 28.65s
  2. ./configure.sh --non-interactive --output e2e-arbiter.toml --upstream http://127.0.0.1:9999 → valid TOML generated
  3. arbiter --config e2e-arbiter.toml with secrets from env → startup logs show:
    • admin API key loaded from ARBITER_ADMIN_API_KEY env var
    • signing secret loaded from ARBITER_SIGNING_SECRET env var
    • loaded inline policies policies=4
    • proxy listening proxy_addr=0.0.0.0:18080
    • admin API listening admin_addr=0.0.0.0:13000
  4. curl http://127.0.0.1:18080/health200 {"status":"healthy"}
  5. curl -X POST http://127.0.0.1:13000/agents -H "x-api-key: <key>" ... -d '{"owner":"user:alice","model":"gpt-4","capabilities":["read"],"trust_level":"basic"}'201 with agent_id and signed JWT

Note: this test machine has ports 8080/3000 already bound by other services, so the config was rewritten to 18080/13000. The generated defaults (8080/3000) and the trust_level: "basic" lowercase value both work — no casing regression, no missing fields in the curl example.

All test-plan items now check out.

Cyrene I and others added 3 commits April 18, 2026 16:49
- Cargo.lock: rustls-webpki 0.103.10 -> 0.103.12 to resolve
  RUSTSEC-2026-0098 and RUSTSEC-2026-0099 (name-constraint bypasses
  for URI and wildcard names in TLS cert validation).
- storage_registry.rs: replace the outer match + nested if pattern
  with let-else + combined if to satisfy clippy 1.95's
  collapsible_match lint without putting .await in a match guard.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…sort_by

Two reverse-sort-by-numeric-key sites flagged by clippy 1.95's
unnecessary_sort_by lint. The suggestion pattern
(sort_by_key(|b| std::cmp::Reverse(b.1))) is slightly faster and
reads more clearly than the manual comparator.

- crates/arbiter-policy/src/eval.rs:145
- crates/arbiter-policy/src/model.rs:392

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Rustfmt prefers the combined if-condition on a single line since it
fits within the line budget. Cosmetic-only; behavior unchanged.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@cyrenei cyrenei merged commit b0eaff9 into main Apr 19, 2026
9 checks passed
@cyrenei cyrenei deleted the feat/configure-wizard branch April 19, 2026 00:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant