forked from NVIDIA/nemoclaw-community
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpolicy.yaml
More file actions
200 lines (199 loc) · 6.44 KB
/
Copy pathpolicy.yaml
File metadata and controls
200 lines (199 loc) · 6.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
version: 1
filesystem_policy:
include_workdir: true
read_only:
- /usr
- /lib
- /opt/hermes
- /proc
- /dev/urandom
- /app
- /etc
- /var/log
- /sandbox/.hermes
read_write:
- /sandbox
- /tmp
- /dev/null
- /sandbox/.hermes-data
landlock:
compatibility: best_effort
process:
run_as_user: sandbox
run_as_group: sandbox
network_policies:
# Load-bearing: per-path allow rules for the NVIDIA inference API.
# providers/compatible-endpoint.yaml grants read-write over these hosts but
# cannot express path scoping (v2 ProviderProfile schema has no rules[]).
# Removing this block widens egress to all /v1/* paths.
nvidia:
name: nvidia
endpoints:
- host: integrate.api.nvidia.com
port: 443
protocol: rest
tls: terminate
enforcement: enforce
rules:
- allow:
method: POST
path: /v1/chat/completions
- allow:
method: POST
path: /v1/completions
- allow:
method: POST
path: /v1/embeddings
- allow:
method: GET
path: /v1/models
- allow:
method: GET
path: /v1/models/**
- host: inference-api.nvidia.com
port: 443
protocol: rest
tls: terminate
enforcement: enforce
rules:
- allow:
method: POST
path: /v1/chat/completions
- allow:
method: POST
path: /v1/completions
- allow:
method: POST
path: /v1/embeddings
- allow:
method: GET
path: /v1/models
- allow:
method: GET
path: /v1/models/**
binaries:
- path: /usr/local/bin/hermes
- path: /opt/hermes/.venv/bin/hermes
- path: /usr/bin/python3
- path: /usr/bin/python3.13
- path: /opt/hermes/.venv/bin/python
# ATIF object-storage export — sandbox uploads completed trajectories to
# the host-side atif-export-relay (which then forwards to MinIO or real S3).
# Auth: per-sandbox bearer token carried in the SigV4 Credential= slot via
# OpenShell L7 placeholder substitution (provider: nemoclaw-atif-export-relay).
atif_export_relay:
name: atif_export_relay
endpoints:
- host: __ATIF_RELAY_HOST__
port: __ATIF_RELAY_PORT__
protocol: rest
enforcement: enforce
allowed_ips:
- 10.0.0.0/8
- 172.0.0.0/8
- 192.168.0.0/16
- fc00::/7
rules:
- allow:
method: PUT
path: /**
- allow:
method: GET
path: /healthz
binaries:
# nemo-relay-cli is kept for the post-EKU-fix sunset path (when the
# bridge is removed, nemo-relay will talk to this endpoint directly).
- path: /usr/local/bin/nemo-relay
# atif-bridge sidecar at /usr/local/lib/nemoclaw-bridges/atif/atif-bridge.py
# — Python ssl/OpenSSL accepts the L7 MITM cert despite missing
# serverAuth EKU; this is the live data path until OpenShell ships the
# EKU fix. See docs/atif-export.md.
- path: /usr/bin/python3
- path: /usr/bin/python3.13
# Credential-less host-routed service — no v2 provider profile equivalent.
# Sandbox policy is the sole authorization gate.
phoenix_collector:
name: phoenix_collector
endpoints:
- host: host.openshell.internal
port: 6006
protocol: rest
enforcement: enforce
allowed_ips:
- 10.0.0.0/8
- 172.0.0.0/8
- 192.168.0.0/16
- fc00::/7
rules:
- allow:
method: POST
path: /**
binaries:
- path: /usr/local/bin/nemo-relay
- path: /usr/bin/python3
- path: /usr/bin/python3.13
- path: /opt/hermes/.venv/bin/python
# Credential-less host-routed service — see phoenix_collector above.
source_etl_api:
name: source_etl_api
endpoints:
- host: host.openshell.internal
port: 3100
protocol: rest
enforcement: enforce
allowed_ips:
- 10.0.0.0/8
- 172.0.0.0/8
- 192.168.0.0/16
- fc00::/7
rules:
- allow:
method: GET
path: /**
binaries:
- path: /usr/bin/python3
- path: /usr/bin/python3.13
- path: /opt/hermes/.venv/bin/python
- path: /usr/local/bin/hermes
- path: /opt/hermes/.venv/bin/hermes
- path: /usr/bin/curl
# Load-bearing: per-repo path scoping for live GitHub REST reads.
# providers/github.yaml grants read-only over all of api.github.com.
# This block is the sole gate preventing reads from repos other than
# $GITHUB_READONLY_REPO. Do not delete without an upstream OpenShell
# change that adds per-path rules to the v2 ProviderProfile schema.
github_repo_readonly:
name: github-repo-readonly
# scripts/03-sandbox.sh replaces __GITHUB_READONLY_REPO__ with
# GITHUB_READONLY_REPO from .env before applying this policy.
endpoints:
- host: api.github.com
port: 443
protocol: rest
tls: terminate
enforcement: enforce
rules:
- allow: { method: GET, path: /rate_limit }
- allow: { method: GET, path: /repos/__GITHUB_READONLY_REPO__ }
- allow: { method: GET, path: /repos/__GITHUB_READONLY_REPO__/issues }
- allow: { method: GET, path: /repos/__GITHUB_READONLY_REPO__/issues/** }
- allow: { method: GET, path: /repos/__GITHUB_READONLY_REPO__/labels }
- allow: { method: GET, path: /repos/__GITHUB_READONLY_REPO__/labels/** }
- allow: { method: GET, path: /repos/__GITHUB_READONLY_REPO__/milestones }
- allow: { method: GET, path: /repos/__GITHUB_READONLY_REPO__/milestones/** }
- allow: { method: GET, path: /repos/__GITHUB_READONLY_REPO__/pulls }
- allow: { method: GET, path: /repos/__GITHUB_READONLY_REPO__/pulls/** }
- allow: { method: GET, path: /repos/__GITHUB_READONLY_REPO__/commits }
- allow: { method: GET, path: /repos/__GITHUB_READONLY_REPO__/commits/** }
- allow: { method: GET, path: /repos/__GITHUB_READONLY_REPO__/branches }
- allow: { method: GET, path: /repos/__GITHUB_READONLY_REPO__/branches/** }
- allow: { method: GET, path: /repos/__GITHUB_READONLY_REPO__/contents }
- allow: { method: GET, path: /repos/__GITHUB_READONLY_REPO__/contents/** }
- allow: { method: GET, path: /repos/__GITHUB_READONLY_REPO__/readme }
binaries:
- path: /usr/bin/curl
- path: /usr/bin/python3
- path: /usr/bin/python3.13
- path: /opt/hermes/.venv/bin/python