Skip to content

Commit c823766

Browse files
committed
docs: remove Docker/K3s/Kubernetes references from all documentation
Update README to reflect completed Apple Container migration: move feat/apple-container and fix/ci-swift-bridge-dependency from In Progress to merged status table, rewrite How It Works to describe native gateway and container bridge architecture, remove GPU passthrough section, add container-bridge to architecture table. Remove K3s/Kubernetes/Docker references from: architecture docs (sandbox-connect, sandbox-providers), agent configs (arch-doc-writer), skill docs (update-docs), project docs (AGENTS.md, CONTRIBUTING.md), and agent memory (arch-doc-writer MEMORY.md).
1 parent 17e5dd3 commit c823766

9 files changed

Lines changed: 30 additions & 62 deletions

File tree

.agents/skills/update-docs/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ For each relevant commit, determine which doc page(s) it affects. Use this mappi
5656
| `crates/openshell-inference/` | `docs/inference/configure.md` |
5757
| `python/` (SDK changes) | `docs/reference/` or `docs/get-started/quickstart.md` |
5858
| `proto/` (API changes) | `docs/reference/` |
59-
| `deploy/` (Dockerfile, Helm) | `docs/sandboxes/manage-gateways.md`, `docs/about/architecture.md` |
59+
| `deploy/` (Containerfile, config) | `docs/sandboxes/manage-gateways.md`, `docs/about/architecture.md` |
6060
| Community sandbox definitions | `docs/sandboxes/community-sandboxes.md` |
6161

6262
If a commit does not map to any existing page but introduces a user-visible concept, flag it as needing a new page.

.claude/agent-memory/arch-doc-writer/MEMORY.md

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,11 @@
3333
- CLI cluster resolution: --cluster flag > OPENSHELL_CLUSTER env > active cluster file
3434

3535
## Bootstrap Crate Details
36-
- `docker.rs`: `ensure_container()` sets ~12 env vars (REGISTRY_*, IMAGE_*, PUSH_IMAGE_REFS, etc.)
37-
- `runtime.rs`: Polling params: health 180x2s, mTLS 90x2s
36+
- `container_runtime.rs`: RuntimeType enum, Apple Container runtime detection
37+
- `runtime_apple.rs`: Native macOS gateway process management, PID locking via flock
3838
- `metadata.rs`: Metadata at `gateways/{name}/metadata.json` (nested), mTLS at `gateways/{name}/mtls/` (nested)
39-
- `push.rs`: Uses `ctr` (not `k3s ctr`) with k3s containerd socket, `k8s.io` namespace
40-
- IMPORTANT: `ClusterHandle::destroy()` does NOT remove metadata; only CLI `cluster_admin_destroy()` in run.rs does
41-
- `ensure_image()`: Local-only refs (no `/`) get error with build instructions, not a Docker Hub pull attempt
42-
- Dockerfile.cluster: k3s v1.29.8-k3s1 base, manifests in `/opt/openshell/manifests/` (volume mount overwrites `/var/lib/`)
43-
- Healthcheck: checks k8s readyz, StatefulSet ready, Gateway Programmed, conditionally mTLS secret
39+
- IMPORTANT: No Docker, no K3s, no Kubernetes. Gateway runs as a native macOS process.
40+
- Container bridge: Swift daemon in `container-bridge/` translates gRPC to Apple Container API
4441

4542
## Server Crate Details
4643
- Two gRPC services: OpenShell (grpc.rs) and Inference (inference.rs), multiplexed via GrpcRouter by URI path
@@ -55,24 +52,15 @@
5552
- SSH handshake: "NSSH1" preface + HMAC-SHA256, used in both exec proxy (grpc.rs) and tunnel gateway (ssh_tunnel.rs)
5653
- Phase derivation: transient reasons (ReconcilerError, DependenciesNotReady) -> Provisioning; all others -> Error
5754
- Broadcast bus buffer sizes: SandboxWatchBus=128, TracingLogBus=1024, PlatformEventBus=1024
58-
- Sandbox CRD: `agents.x-k8s.io/v1alpha1/Sandbox`, labels: `openshell.ai/sandbox-id`, `openshell.ai/managed-by`
55+
- Sandbox backend: Apple Container VMs via container bridge gRPC
5956
- Proto files also include: `proto/inference.proto` (openshell.inference.v1)
6057

6158
## Container/Build Details
62-
- Four runtime images: sandbox (5 stages), gateway (2 stages), cluster (k3s base), pki-job (Alpine)
63-
- Two build-only images: python-wheels (Linux multi-arch), python-wheels-macos (osxcross cross-compile)
64-
- CI image: Dockerfile.ci (Ubuntu 24.04, pre-installs docker/buildx/aws/kubectl/helm/mise/uv/sccache/socat)
65-
- Cross-compilation: `deploy/docker/cross-build.sh` shared by sandbox + gateway Dockerfiles
66-
- Sandbox image has coding-agents stage: Claude CLI (native installer), OpenCode, Codex (npm)
67-
- Helm chart deploys a StatefulSet (NOT Deployment), PVC 1Gi at /var/openshell
68-
- Cluster image does NOT bundle image tarballs -- components pulled at runtime from distribution registry
69-
- PKI job generates CA + server cert + client cert for mTLS (RSA 2048, 10yr, Helm pre-install hook)
70-
- Build tasks in `tasks/*.toml`; scripts in `tasks/scripts/`
71-
- `cluster-deploy-fast.sh` supports both auto mode (git diff) and explicit targets (gateway/sandbox/chart/all)
72-
- `cluster-bootstrap.sh` ensures local Docker registry on port 5000, pushes all components, then deploys
73-
- Default values.yaml: repository is CloudFront-backed CDN, tag: "latest", pullPolicy: Always
74-
- Envoy Gateway version: v1.5.8 (set in mise.toml)
75-
- DNS solution in cluster-entrypoint.sh: iptables DNAT proxy (NOT host-gateway resolv.conf)
59+
- Gateway Containerfile: `deploy/container/Containerfile.gateway`
60+
- Container bridge: Swift package in `container-bridge/`, builds via `swift build -c release`
61+
- PKI: mTLS cert generation in bootstrap crate (RSA 2048)
62+
- Build tasks in `tasks/*.toml` (apple.toml for Apple Container tasks)
63+
- No Docker, no Helm, no K3s, no Kubernetes manifests
7664

7765
## Sandbox Connect Details
7866
- CLI SSH module: `crates/openshell-cli/src/ssh.rs` (sandbox_connect, sandbox_exec, sandbox_rsync, sandbox_ssh_proxy)

.claude/agents/arch-doc-writer.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ This is the OpenShell project — a sandbox/isolation system built in Rust.
1919
The docs in `architecture/` are structured as subsystem[-component].md. Key sub-systems are:
2020

2121
- build (build system)
22-
- cluster (the entire deployment that can run on a single node or multi-node kubernetes cluster)
22+
- cluster (the gateway process and container bridge that manage sandboxes on the local machine)
2323
- gateway (the control plane / server system that manages a cluster and sandboxes)
2424
- inference (access to models for agents and what they produce, includes privacy aware model routing)
2525
- sandbox (long-running agentic environments that are strictly controlled by security policies)

.opencode/agents/arch-doc-writer.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ This is the OpenShell project — a sandbox/isolation system built in Rust.
2424
The docs in `architecture/` are structured as subsystem[-component].md. Key sub-systems are:
2525

2626
- build (build system)
27-
- cluster (the entire deployment that can run on a single node or multi-node kubernetes cluster)
27+
- cluster (the gateway process and container bridge that manage sandboxes on the local machine)
2828
- gateway (the control plane / server system that manages a cluster and sandboxes)
2929
- inference (access to models for agents and what they produce, includes privacy aware model routing)
3030
- sandbox (long-running agentic environments that are strictly controlled by security policies)

AGENTS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ These pipelines connect skills into end-to-end workflows. Individual skill files
4040
| `crates/openshell-tui/` | Terminal UI | Ratatui-based dashboard for monitoring |
4141
| `python/openshell/` | Python SDK | Python bindings and CLI packaging |
4242
| `proto/` | Protobuf definitions | gRPC service contracts |
43-
| `deploy/` | Containers, deployment config | Dockerfiles, deployment configuration |
43+
| `deploy/` | Deployment config | Containerfiles and deployment configuration |
4444
| `.agents/skills/` | Agent skills | Workflow automation for development |
4545
| `.agents/agents/` | Agent personas | Sub-agent definitions (e.g., reviewer, doc writer) |
4646
| `architecture/` | Architecture docs | Design decisions and component documentation |

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ These are the primary `mise` tasks for day-to-day development:
196196
| `python/` | Python SDK and bindings |
197197
| `proto/` | Protocol buffer definitions |
198198
| `tasks/` | `mise` task definitions and build scripts |
199-
| `deploy/` | Dockerfiles, deployment configuration |
199+
| `deploy/` | Containerfiles, deployment configuration |
200200
| `architecture/` | Architecture docs and plans |
201201
| `rfc/` | Request for Comments proposals |
202202
| `docs/` | User-facing documentation (Sphinx/MyST) |

README.md

Lines changed: 9 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -13,30 +13,23 @@ This is an active fork of [NVIDIA/OpenShell](https://github.com/NVIDIA/OpenShell
1313

1414
OpenShell is the safe, private runtime for autonomous AI agents. It provides sandboxed execution environments that protect your data, credentials, and infrastructure — governed by declarative YAML policies that prevent unauthorized file access, data exfiltration, and uncontrolled network activity.
1515

16-
> **Fork status: active development.** The Apple Container migration is in progress. Security hardening has landed across 8 merged PRs. This fork tracks upstream and periodically syncs.
16+
> **Fork status: Apple Container migration complete.** Docker and K3s/Kubernetes have been fully removed. The gateway runs as a native macOS process and sandboxes are Apple Container VMs. Security hardening has landed across 8 merged PRs. This fork tracks upstream and periodically syncs.
1717
1818
## Fork Development Status
1919

20-
### Merged
21-
2220
| Area | Branch | Summary |
2321
|------|--------|---------|
22+
| Runtime | `feat/apple-container` | Core Apple Container integration: native gateway, container bridge, SSH bootstrap |
2423
| Security | `security/secure-defaults` | Localhost bind, enforce mode, Apple Container backend |
2524
| Security | `security/ci-hardening` | Fix shell injection in GitHub Actions workflows |
2625
| Security | `security/pki-hardening` | Constrain CA, fail-hard secrets, 365-day cert TTL |
2726
| Security | `security/ssh-host-key` | SSH host key verification when gateway provides fingerprint |
2827
| Security | `security/gateway-auth` | Insecure-mode guard, cross-sandbox credential theft fix |
2928
| Security | `security/misc-hardening` | PID locking, forward-spec warning, non-root container |
30-
| Security | `security/dead-code-removal` | Remove Kubernetes/Docker dead code from config and server |
29+
| Security | `security/dead-code-removal` | Remove Docker/K3s dead code from config and server |
3130
| Security | `security/fix-ssh-host-key-verification` | Hostname format, tempfile dep, TempDir leak fixes |
3231
| CI | `ci/trigger-macos-e2e` | macOS e2e validation with Apple Container install |
3332
| CI | `fix/release-auto-tag-signing` | Sign auto-tags via GitHub API, handle missing seed tag |
34-
35-
### In Progress
36-
37-
| Area | Branch | Summary |
38-
|------|--------|---------|
39-
| Runtime | `feat/apple-container` | Core Apple Container integration (21 commits ahead) |
4033
| CI | `fix/ci-swift-bridge-dependency` | Clone Apple Container for Swift bridge build |
4134

4235
## Quickstart
@@ -67,7 +60,7 @@ Both methods install the latest stable release from upstream by default. To inst
6760
openshell sandbox create -- claude # or opencode, codex, copilot
6861
```
6962

70-
A gateway is created automatically on first use. To deploy on a remote host instead, pass `--remote user@host` to the create command.
63+
A gateway is created automatically on first use.
7164

7265
The sandbox container includes the following tools by default:
7366

@@ -126,7 +119,7 @@ OpenShell isolates each sandbox in its own container with policy-enforced egress
126119
| **Policy Engine** | Enforces filesystem, network, and process constraints from application layer down to kernel. |
127120
| **Privacy Router** | Privacy-aware LLM routing that keeps sensitive context on sandbox compute. |
128121

129-
Under the hood, all these components run as a [K3s](https://k3s.io/) Kubernetes cluster inside a container — no separate K8s install required. On this fork, the container runtime is [Apple Container](https://github.com/apple/container) on macOS (replacing the upstream Docker dependency). The `openshell gateway` commands take care of provisioning the container and cluster.
122+
On this fork, the gateway runs as a native macOS process and each sandbox is an [Apple Container](https://github.com/apple/container) VM. A Swift-based container bridge translates gRPC sandbox lifecycle calls into Apple Container API operations. The `openshell gateway` commands manage the gateway process and container bridge daemon.
130123

131124
## Protection Layers
132125

@@ -145,20 +138,6 @@ Policies are declarative YAML files. Static sections (filesystem, process) are l
145138

146139
Agents need credentials — API keys, tokens, service accounts. OpenShell manages these as **providers**: named credential bundles that are injected into sandboxes at creation. The CLI auto-discovers credentials for recognized agents (Claude, Codex, OpenCode, Copilot) from your shell environment, or you can create providers explicitly with `openshell provider create`. Credentials never leak into the sandbox filesystem; they are injected as environment variables at runtime.
147140

148-
## GPU Support (Experimental)
149-
150-
> **Experimental** — GPU passthrough works on supported hosts but is under active development. Expect rough edges and breaking changes.
151-
152-
OpenShell can pass host GPUs into sandboxes for local inference, fine-tuning, or any GPU workload. Add `--gpu` when creating a sandbox:
153-
154-
```bash
155-
openshell sandbox create --gpu --from [gpu-enabled-sandbox] -- claude
156-
```
157-
158-
The CLI auto-bootstraps a GPU-enabled gateway on first use, auto-selecting CDI when available. GPU intent is also inferred automatically for community images with `gpu` in the name.
159-
160-
**Requirements:** NVIDIA drivers and the [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html) must be installed on the host. The sandbox image must include the appropriate GPU drivers and libraries for your workload — the default `base` image does not. See the [BYOC example](https://github.com/NVIDIA/OpenShell/tree/main/examples/bring-your-own-container) for building a custom sandbox image with GPU support.
161-
162141
## Supported Agents
163142

164143
| Agent | Source | Notes |
@@ -188,7 +167,7 @@ See the full [CLI reference](https://github.com/NVIDIA/OpenShell/blob/main/docs/
188167

189168
## Terminal UI
190169

191-
OpenShell includes a real-time terminal dashboard for monitoring gateways, sandboxes, and providers — inspired by [k9s](https://k9scli.io/).
170+
OpenShell includes a real-time terminal dashboard for monitoring gateways, sandboxes, and providers.
192171

193172
```bash
194173
openshell term
@@ -198,7 +177,7 @@ openshell term
198177
<img src="docs/assets/openshell-terminal.png" alt="OpenShell Terminal UI">
199178
</p>
200179

201-
The TUI gives you a live, keyboard-driven view of your cluster. Navigate with `Tab` to switch panels, `j`/`k` to move through lists, `Enter` to select, and `:` for command mode. Cluster health and sandbox status auto-refresh every two seconds.
180+
The TUI gives you a live, keyboard-driven view of your gateways and sandboxes. Navigate with `Tab` to switch panels, `j`/`k` to move through lists, `Enter` to select, and `:` for command mode. Gateway health and sandbox status auto-refresh every two seconds.
202181

203182
## Community Sandboxes and BYOC
204183

@@ -244,7 +223,8 @@ All implementation work is human-gated — agents propose plans, humans approve,
244223
| Sandbox | `crates/openshell-sandbox/` | Container supervision, policy-enforced egress routing |
245224
| Policy Engine | `crates/openshell-policy/` | Filesystem, network, process, and inference constraints |
246225
| Privacy Router | `crates/openshell-router/` | Privacy-aware LLM routing |
247-
| Bootstrap | `crates/openshell-bootstrap/` | Cluster setup, image loading, mTLS PKI |
226+
| Container Bridge | `container-bridge/` | Swift daemon bridging gRPC to Apple Container API |
227+
| Bootstrap | `crates/openshell-bootstrap/` | Gateway setup, Apple Container runtime, mTLS PKI |
248228
| Core | `crates/openshell-core/` | Shared types, configuration, error handling |
249229
| Providers | `crates/openshell-providers/` | Credential provider backends |
250230
| TUI | `crates/openshell-tui/` | Ratatui-based terminal dashboard |

architecture/sandbox-connect.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,19 +96,19 @@ sequenceDiagram
9696
participant gRPC as Gateway (gRPC)
9797
participant Proxy as CLI (ssh-proxy)
9898
participant GW as Gateway (/connect/ssh)
99-
participant K8s as Pod Resolver
99+
participant VM as Apple Container VM
100100
participant SSHD as Sandbox SSH Daemon
101101
102102
CLI->>gRPC: GetSandbox(name) -> sandbox.id
103103
CLI->>gRPC: CreateSshSession(sandbox_id)
104104
gRPC-->>CLI: token, gateway_host, gateway_port, scheme, connect_path
105105
106-
Note over CLI: Builds ProxyCommand string<br/>exec()s into ssh process
106+
Note over CLI: Builds ProxyCommand string<br/>starts ssh process
107107
108108
User->>Proxy: ssh spawns ProxyCommand subprocess
109109
Proxy->>GW: CONNECT /connect/ssh HTTP/1.1<br/>X-Sandbox-Id, X-Sandbox-Token
110110
GW->>GW: Validate token + sandbox phase
111-
GW->>K8s: Resolve pod IP (or service DNS)
111+
GW->>VM: Resolve container IP
112112
GW->>SSHD: TCP connect to port 2222
113113
GW->>SSHD: NSSH1 preface (token, ts, nonce, hmac)
114114
SSHD-->>GW: OK

architecture/sandbox-providers.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -345,10 +345,10 @@ CLI: openshell sandbox create -- claude
345345
Gateway: create_sandbox()
346346
+-- Validates provider "claude" exists in store (fail fast)
347347
+-- Persists Sandbox with spec.providers = ["claude"]
348-
+-- Creates K8s Sandbox CRD (no credentials in pod spec)
348+
+-- Creates Apple Container VM (no credentials in container spec)
349349
|
350-
K8s: pod starts openshell-sandbox binary
351-
+-- OPENSHELL_SANDBOX_ID and OPENSHELL_ENDPOINT set in pod env
350+
Apple Container: VM starts openshell-sandbox binary
351+
+-- OPENSHELL_SANDBOX_ID and OPENSHELL_ENDPOINT set in container env
352352
|
353353
Sandbox supervisor: run_sandbox()
354354
+-- Fetches policy via gRPC

0 commit comments

Comments
 (0)