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
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ The format is intentionally lightweight and human-readable. Group entries by rel
- Added matching provider `.env` starter files for cloud, local-worker, and image-provider onboarding flows
- Added provider env placeholder checks to `foundrygate-doctor` so missing `.env` values are surfaced before rollout
- Added `--markdown` output to `foundrygate-onboarding-report` so onboarding state can be pasted into issues, PRs, or hand-off notes
- Added delegated OpenClaw request and generic AI-native app profile starters to round out the `v0.8.x` onboarding path

## v0.7.0 - 2026-03-12

Expand Down
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -858,6 +858,11 @@ If you want to paste the current onboarding state into a ticket or PR, run:
```bash
./scripts/foundrygate-onboarding-report --markdown
```

For delegated OpenClaw traffic and future AI-native app profiles, the new starters live here as well:

- [openclaw-delegated-request.json](./docs/examples/openclaw-delegated-request.json)
- [client-ai-native-app-profile.yaml](./docs/examples/client-ai-native-app-profile.yaml)
| `foundrygate-install` | Installs the unit file, creates `/var/lib/foundrygate`, creates helper symlinks, reloads `systemd`, and starts the service |
| `foundrygate-start` | Runs `systemctl start foundrygate.service` |
| `foundrygate-stop` | Runs `systemctl stop foundrygate.service` |
Expand Down
14 changes: 13 additions & 1 deletion docs/FOUNDRYGATE-ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ The foundation that used to be the near-term buildout is largely in place:

This roadmap now shifts from "rename and foundation" to "deepen the gateway plane without bloating it".

`v0.5.0` is the current operator-distribution release line: modality-aware image paths, publish workflows, onboarding helpers, community baselines, and release update checks are now in place on top of the `v0.4.x` routing foundation.
`v0.8.x` is the current release line: many-provider and many-client onboarding is being tightened with validation helpers, starter templates, delegated-traffic examples, and shareable onboarding output on top of the already-shipped routing, modality, and ops foundation.

## Big Picture

Expand Down Expand Up @@ -230,6 +230,18 @@ Primary goals:

The target is faster adoption without custom glue for every client.

Current `v0.8.x` baseline already includes:

- onboarding report plus validation helpers
- staged provider rollout reporting
- client matrix reporting
- starter templates for OpenClaw, n8n, CLI, cloud providers, local workers, and image providers
- matching provider `.env` starter files
- delegated OpenClaw request examples
- starter custom-profile examples for future AI-native applications
- doctor checks for missing provider env placeholders
- JSON and Markdown onboarding exports

### `v0.9.x`: pre-1.0 hardening

Primary goals:
Expand Down
16 changes: 16 additions & 0 deletions docs/INTEGRATIONS.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ Minimal direction:

For a smaller starter snippet without the full alias block, use [examples/openclaw-foundrygate.jsonc](./examples/openclaw-foundrygate.jsonc).

For delegated or many-agent traffic, start from [examples/openclaw-delegated-request.json](./examples/openclaw-delegated-request.json) and keep `x-openclaw-source` stable across sub-agents so traces stay attributable.

## n8n

n8n can use FoundryGate as a stable local model gateway.
Expand Down Expand Up @@ -91,6 +93,20 @@ export OPENAI_API_KEY=local

For a reusable shell starter, use [examples/cli-foundrygate-env.sh](./examples/cli-foundrygate-env.sh).

## AI-native app clients

For future app-specific clients, keep the same OpenAI-compatible base URL and add one stable app header before creating multiple custom profiles.

Recommended pattern:

- set `X-FoundryGate-Client: your-app`
- create one explicit app profile
- only split into `ops`, `private`, or `local-only` profiles when real routing differences emerge

Starter snippet:

- [examples/client-ai-native-app-profile.yaml](./examples/client-ai-native-app-profile.yaml)

## Provider onboarding

When onboarding a new provider:
Expand Down
5 changes: 5 additions & 0 deletions docs/ONBOARDING.md
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,10 @@ OpenClaw:

Starter file: [examples/openclaw-foundrygate.jsonc](./examples/openclaw-foundrygate.jsonc)

Delegated / many-agent example:

- [examples/openclaw-delegated-request.json](./examples/openclaw-delegated-request.json)

n8n:

```text
Expand All @@ -143,6 +147,7 @@ Starter files:

- [examples/n8n-foundrygate-http-request.json](./examples/n8n-foundrygate-http-request.json)
- [examples/cli-foundrygate-env.sh](./examples/cli-foundrygate-env.sh)
- [examples/client-ai-native-app-profile.yaml](./examples/client-ai-native-app-profile.yaml)

### 4. Add request hooks only if needed

Expand Down
21 changes: 21 additions & 0 deletions docs/examples/client-ai-native-app-profile.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
client_profiles:
enabled: true
default: generic
profiles:
generic: {}
app-ops:
prefer_tiers: ["default", "cheap"]
capability_values:
local: false
app-private:
capability_values:
local: true
rules:
- profile: app-ops
match:
header_contains:
x-foundrygate-client: ["elementify", "ops-app"]
- profile: app-private
match:
header_contains:
x-foundrygate-profile: ["private", "local-only"]
15 changes: 15 additions & 0 deletions docs/examples/openclaw-delegated-request.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"headers": {
"x-openclaw-source": "delegate:planner",
"x-foundrygate-client": "openclaw"
},
"body": {
"model": "auto",
"messages": [
{
"role": "user",
"content": "Break this task into sub-steps and assign the first one."
}
]
}
}
16 changes: 16 additions & 0 deletions foundrygate/onboarding.py
Original file line number Diff line number Diff line change
Expand Up @@ -303,6 +303,22 @@ def build_onboarding_report(
"Use x-openclaw-source when you want sub-agent traffic to resolve differently.",
],
},
"ai-native-app": {
"recommended": any(
name not in {"generic", "openclaw", "n8n", "cli", "local-only"}
for name in profile_names
),
"header": "X-FoundryGate-Client: your-app",
"profile": "custom app profile",
"snippet": [
"client_profiles.rules -> match on X-FoundryGate-Client",
"client_profiles.profiles -> define app-specific prefer_tiers or locality",
],
"notes": [
"Start with one stable client header before adding more than one app profile.",
"Keep app-private traffic on a dedicated profile instead of ad hoc hooks.",
],
},
"n8n": {
"recommended": "n8n" in enabled_presets or "n8n" in profile_names,
"header": "X-FoundryGate-Client: n8n",
Expand Down
Loading