-
Notifications
You must be signed in to change notification settings - Fork 95
feat: add ZeroClaw AI agent runtime stack #691
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
+102
−0
Merged
Changes from all commits
Commits
Show all changes
4 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -62,3 +62,6 @@ | |
|
|
||
| # OpenClaw stacks | ||
| /stacks/openclaw/ @akurinnoy | ||
|
|
||
| # ZeroClaw stacks | ||
| /stacks/zeroclaw/ @akurinnoy | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,91 @@ | ||
| # ZeroClaw — AI Agent Gateway/Runtime Stack | ||
| # | ||
| # ZeroClaw is an open-source Rust-based AI agent gateway/runtime. | ||
| # Repo: https://github.com/zeroclaw-labs/zeroclaw | ||
| # | ||
| # The daemon container runs the zeroclaw daemon which provides: | ||
| # - Gateway server on port 42617 — webhooks, websockets, web UI | ||
| # | ||
| # The editor (VS Code, ttyd, etc.) is chosen separately in the dashboard | ||
| # and injected into the tools container. | ||
| # | ||
| # First boot: run `zeroclaw quickstart` in the terminal to create | ||
| # your first agent, then restart the workspace. | ||
|
|
||
| schemaVersion: 2.3.0 | ||
| metadata: | ||
| name: zeroclaw | ||
| displayName: ZeroClaw AI Agent Runtime | ||
| description: A fast, lightweight AI agent runtime. 50+ integrations, webhooks, websockets, and a web UI — all in one binary. | ||
| icon: https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/apps/tauri/icons/icon.png | ||
| tags: | ||
| - AI | ||
| - Agent | ||
| - Gateway | ||
| - ZeroClaw | ||
| projectType: AI | ||
| language: Polyglot | ||
| version: 1.0.0 | ||
|
|
||
| attributes: | ||
| controller.devfile.io/storage-type: per-workspace | ||
|
|
||
| components: | ||
| - name: tools | ||
| container: | ||
| image: quay.io/devfile/universal-developer-image:ubi9-latest | ||
| memoryLimit: 1Gi | ||
| memoryRequest: 256Mi | ||
| mountSources: true | ||
|
|
||
| # ZeroClaw daemon container. | ||
| # Runs the daemon (gateway on port 42617). | ||
| # Config persists in the PVC at /home/user/.zeroclaw. | ||
| - name: zeroclaw | ||
| container: | ||
| image: quay.io/che-incubator/zeroclaw-image:latest | ||
| mountSources: false | ||
| memoryRequest: 256Mi | ||
| memoryLimit: 1Gi | ||
| args: ["daemon", "--host", "0.0.0.0"] | ||
| env: | ||
| - name: HOME | ||
| value: /home/user | ||
| - name: ZEROCLAW_DATA_DIR | ||
| value: /home/user/.zeroclaw/data | ||
| endpoints: | ||
| - name: gateway | ||
| targetPort: 42617 | ||
| exposure: public | ||
| protocol: https | ||
| attributes: | ||
| cookiesAuthEnabled: true | ||
| discoverable: false | ||
| urlRewriteSupported: false | ||
| volumeMounts: | ||
| - name: zeroclaw-data | ||
| path: /home/user/.zeroclaw | ||
|
|
||
| - name: zeroclaw-data | ||
| volume: | ||
| size: 1Gi | ||
|
|
||
| commands: | ||
| - id: quickstart | ||
| exec: | ||
| label: "Create your first agent (quickstart)" | ||
| component: zeroclaw | ||
| commandLine: zeroclaw quickstart | ||
| workingDir: /home/user | ||
| - id: status | ||
| exec: | ||
| label: "Show ZeroClaw status" | ||
| component: zeroclaw | ||
| commandLine: zeroclaw status | ||
| workingDir: /home/user | ||
| - id: doctor | ||
| exec: | ||
| label: "Run diagnostics" | ||
| component: zeroclaw | ||
| commandLine: zeroclaw doctor | ||
| workingDir: /home/user | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| name: zeroclaw | ||
| displayName: ZeroClaw AI Agent Runtime | ||
| description: A fast, lightweight AI agent runtime. 50+ integrations, webhooks, websockets, and a web UI — all in one binary. | ||
| icon: https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/apps/tauri/icons/icon.png | ||
| versions: | ||
| - version: 1.0.0 | ||
| default: true |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🩺 Stability & Availability | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
Repository: devfile/registry
Length of output: 194
🏁 Script executed:
Repository: devfile/registry
Length of output: 7805
🌐 Web query:
ZeroClaw gateway.allow_public_bind ZEROCLAW_ALLOW_PUBLIC_BIND docker configuration docs💡 Result:
In ZeroClaw, gateway.allow_public_bind (or the environment variable ZEROCLAW_ALLOW_PUBLIC_BIND) is a security configuration setting that governs whether the gateway is permitted to bind to non-localhost addresses, such as 0.0.0.0 (all interfaces) [1][2]. By default, for security reasons, ZeroClaw restricts the gateway to the localhost (127.0.0.1) to prevent unintended exposure to external networks [1][2]. If you attempt to bind to 0.0.0.0 without this setting explicitly enabled, the gateway will refuse to start [2][3]. Docker Configuration In containerized environments like Docker, it is common to set ZEROCLAW_ALLOW_PUBLIC_BIND=true [4][5]. This is necessary because containers typically need to bind to all interfaces (often represented as [::] or 0.0.0.0) to allow traffic from the host or other containers to reach the service [4]. The security model for containerized deployments relies on Docker's internal network isolation rather than restricting the bind address to localhost [4]. Example Docker Compose configuration: services: zeroclaw: image: ghcr.io/zeroclaw-labs/zeroclaw:latest environment: - ZEROCLAW_ALLOW_PUBLIC_BIND=true - ZEROCLAW_GATEWAY_PORT=42617 ports: - "42617:42617" When setting this to true, be aware that the gateway becomes reachable outside of localhost (e.g., on your local area network) [1][6]. If you require public webhooks, the recommended approach is to use a tunnel (such as Tailscale, ngrok, or Cloudflare) rather than exposing the port directly via a public bind [1][2].
Citations:
🌐 Web query:
quay.io/che-incubator/zeroclaw-image Dockerfile ZEROCLAW_ALLOW_PUBLIC_BIND💡 Result:
The ZEROCLAW_ALLOW_PUBLIC_BIND environment variable is a configuration setting used in ZeroClaw container deployments to control the gateway's network binding behavior [1][2]. The official ZeroClaw container image typically includes a default configuration file that already sets allow_public_bind = true and binds to [::] (all network interfaces), enabling the gateway to be reachable out of the box when the container's ports are published [3][1]. Key details regarding this variable include: - Purpose: In containerized environments, the ZeroClaw gateway is designed to refuse binding to public interfaces (like 0.0.0.0 or [::]) for security reasons unless explicitly authorized [4][2]. Setting ZEROCLAW_ALLOW_PUBLIC_BIND=true provides this authorization, allowing the gateway to accept connections from outside the container [5][1][6]. - Usage: You generally only need to set this environment variable if you are bind-mounting a custom configuration file that defaults to localhost binding [3]. - Configuration: When used, it is typically passed as an environment variable in a docker-compose.yml or similar deployment manifest [5][1][6]. - Security: It is an opt-in mechanism to move away from the default, safer localhost-only binding [4][2]. Ensure that any public exposure is managed appropriately through network security controls (e.g., firewall, VPC, or tunnels) [4]. For most standard deployments using the official image, the internal defaults are sufficient, and the environment variable can be omitted [3]. If you are experiencing connectivity issues despite publishing ports, or if you are using a custom configuration, ensuring this variable is set to true may be required [1][6].
Citations:
🌐 Web query:
github.com/zeroclaw-labs/zeroclaw config.schema allow_public_bind ZEROCLAW_ALLOW_PUBLIC_BIND💡 Result:
The configuration parameter allow_public_bind and its corresponding environment variable ZEROCLAW_ALLOW_PUBLIC_BIND in ZeroClaw are security controls designed to prevent accidental exposure of the ZeroClaw HTTP gateway [1][2]. By default, the ZeroClaw gateway binds to the loopback address (127.0.0.1) [3][4]. If you attempt to configure the gateway to bind to a non-loopback address (such as 0.0.0.0) without setting allow_public_bind to true, the application will refuse to start [3][4][5]. This mechanism is intended to block accidental public exposure [2][6]. Key details: - Configuration: In config.toml, this is set under the [gateway] section as allow_public_bind = true or false [3][4]. - Environment Variable: Alternatively, you can use the environment variable ZEROCLAW_ALLOW_PUBLIC_BIND, typically set to 1 or true (e.g., ZEROCLAW_ALLOW_PUBLIC_BIND=true) [7][3][8]. - Use Case: This setting is frequently required when running ZeroClaw inside a container (e.g., Docker or Kubernetes) to allow the service to be reachable within the container network or across a local network [7][8][9]. - Security Recommendation: Documentation strongly advises caution when enabling this, as it makes the gateway reachable outside of localhost. It is recommended to use it only on trusted local networks or in conjunction with a secure tunnel (e.g., Cloudflare, Tailscale, or ngrok) for external access [3][4]. The parameter is defined in the project's gateway configuration schema [1][2].
Citations:
🌐 Web query:
site:quay.io/che-incubator/zeroclaw-image Dockerfile ZEROCLAW_ALLOW_PUBLIC_BIND💡 Result:
I couldn’t find a direct
quay.io/che-incubator/zeroclaw-imageDockerfile match, but ZeroClaw’s docs sayZEROCLAW_ALLOW_PUBLIC_BIND=trueis used for Docker/container networking because the gateway normally blocks public binds. The config reference also showsgateway.allow_public_binddefaults tofalse. (github.com)If you want, I can keep digging specifically for the Quay image/Dockerfile history.
Citations:
Make the public-bind override explicit in the devfile.
The command binds ZeroClaw to
0.0.0.0, but ZeroClaw’s defaultgateway.allow_public_bindisfalse, so container deployments are typically run withZEROCLAW_ALLOW_PUBLIC_BIND=true. Since this devfile does not expose it and the wrapper image’s environment cannot be determined from the repository, set the env var here to avoid the daemon rejecting the bind and losing the public endpoint.Suggested fix
env: - name: HOME value: /home/user + - name: ZEROCLAW_ALLOW_PUBLIC_BIND + value: "true" - name: ZEROCLAW_DATA_DIR📝 Committable suggestion
🤖 Prompt for AI Agents