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
12 changes: 7 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,12 @@ __pycache__/

# Build artifacts
harness
sandbox/launcher/openshell
sandbox/launcher/launcher
build/runner/harness
infracluster/
dashboard.html
.claude/
build/runner/harness
build/runner/openshell

# Planning artifacts (local only)
plans/
openshell-arch/
strategy-dashboard.html
dashboard.html
5 changes: 4 additions & 1 deletion .goreleaser.yaml
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
version: 2

builds:
- env:
- binary: harness
env:
- CGO_ENABLED=0
goos:
- linux
- darwin
goarch:
- amd64
- arm64
ldflags:
- -s -w -X main.version={{.Version}}

archives:
- format: tar.gz
4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ Current workarounds and their upstream tracking:
| Custom gateway image | `google-vertex-ai` provider not in released builds yet | Will ship in upstream release |
| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` | Vertex AI rejects `context_management` beta header | Anthropic/Google to align APIs |
| Atlassian `JIRA_URL`/`JIRA_USERNAME` as `--config` material | Provider v2 config keys not injected as env vars yet | OpenShell roadmap |
| In-cluster launcher Job | OpenShell doesn't have a native K8s-triggered sandbox creation | Potential future CRD |
| In-cluster runner Job | OpenShell doesn't have a native K8s-triggered sandbox creation | Potential future CRD |

Previously worked around, now resolved:

Expand All @@ -96,7 +96,7 @@ registration, credential injection, and the GWS OAuth token lifecycle.
Runs in GitHub Actions on every PR.

```
--ci flag = --no-providers --profile=ci --full
--ci flag = --no-providers --agent=ci --full
```

### Make targets
Expand Down
102 changes: 0 additions & 102 deletions PROVIDERS-SPEC.md

This file was deleted.

12 changes: 5 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,15 @@
# OpenShell Harness

Orchestration CLI for [OpenShell](https://github.com/NVIDIA/OpenShell). Automates gateway deployment, provider registration, and sandbox creation across local Podman and remote Kubernetes/OpenShift targets. Wraps the `openshell` CLI -- does not replace it.
Orchestration library and CLI for [OpenShell](https://github.com/NVIDIA/OpenShell).
* Wraps the `openshell` CLI -- does not replace it.
* Automates gateway deployment, provider registration, and sandbox creation across local Podman and remote Kubernetes/OpenShift targets.

## Where This Fits

[OpenShell](https://github.com/NVIDIA/OpenShell) provides the runtime: gateway, sandboxes, L7 network policy, and credential proxy. It handles sandbox lifecycle and credential injection once providers are registered, but leaves gateway deployment orchestration, credential validation, and multi-target configuration to the user.

[NemoClaw](https://github.com/NVIDIA/NemoClaw) is NVIDIA's reference stack for running agents inside OpenShell with managed Nemotron inference. It bundles a specific model backend and onboarding flow.

This harness fills a different gap: multi-provider credential management (preflight validation, registration, health checks) across deployment targets (local Podman, kind, OpenShift) with declarative agent configs. It is model-agnostic -- the agent config chooses the entrypoint and inference backend. The harness orchestrates the infrastructure around it.

The harness wraps `openshell` CLI commands. As OpenShell adds native support for provider validation, multi-target deployment, and agent config rendering, the corresponding harness code shrinks. Every workaround tracks the upstream issue that would eliminate it (see [AGENTS.md](AGENTS.md)).

## Example

An agent config declares the sandbox image, entrypoint, and which providers to attach:
Expand Down Expand Up @@ -61,7 +59,7 @@ tty: false
### Prerequisites

- [OpenShell CLI](https://github.com/NVIDIA/OpenShell) (`brew install openshell && brew services start openshell` on macOS)
- Podman
- Podman/Docker
- Go 1.23+

### Credentials
Expand Down Expand Up @@ -150,4 +148,4 @@ harness teardown [--sandboxes] [--providers] [--k8s]

- [AGENTS.md](AGENTS.md) -- coding guidelines, project principles, workaround tracking
- [SPEC.md](SPEC.md) -- full CLI specification
- [PROVIDERS-SPEC.md](PROVIDERS-SPEC.md) -- provider configuration format
- [TODO.md](TODO.md) -- roadmap and known gaps
Loading
Loading