Skip to content

feat(gui): make all operations fully GUI-driven — no CLI required#1

Closed
mafueee wants to merge 359 commits intomainfrom
feat/gui-full-control
Closed

feat(gui): make all operations fully GUI-driven — no CLI required#1
mafueee wants to merge 359 commits intomainfrom
feat/gui-full-control

Conversation

@mafueee
Copy link
Copy Markdown
Owner

@mafueee mafueee commented Mar 24, 2026

Summary

Make all NemoClaw management operations fully GUI-driven — no CLI commands required.

Backend API Endpoints

  • POST /api/gateway/start / POST /api/gateway/stop — Gateway lifecycle control
  • POST /api/sandboxes/:name/destroy — Full sandbox teardown (NIM containers, sandbox, registry)
  • POST /api/onboard/execute — SSE-based onboard pipeline with real-time progress events
  • GET /api/policies/presets / POST /api/policies/apply / POST /api/policies/remove — Policy management
  • POST /api/chat/message — Agent chat proxy via sandbox exec

Frontend Components

  • PolicyEditor: Sandbox selector + Apply/Remove toggle buttons per preset (replaces read-only display)
  • OnboardWizard: "Deploy Sandbox" button with live SSE progress (replaces nemoclaw onboard CLI text)
  • SandboxManager: Destroy button with red confirmation dialog (replaces CLI-only destroy)
  • ChatInterface: Real agent proxy via sandbox exec (replaces mock simulator)
  • DashboardPage: Gateway Start/Stop toggle in stats row
  • api/client.ts: All new typed API methods

Tests

  • 75/75 tests pass across 10 test files
  • Tests verify new interactive features and absence of CLI command references

Notes

  • Some large files (OnboardWizard.tsx, server/index.js) may need manual cherry-pick from local commits
  • README updated with "All operations are fully GUI-driven" callout and new feature descriptions

vincentkoc and others added 30 commits March 15, 2026 17:18
Signed-off-by: Vincent Koc <vincentkoc@ieee.org>
Signed-off-by: Vincent Koc <vincentkoc@ieee.org>
Signed-off-by: Vincent Koc <vincentkoc@ieee.org>
Installs Node.js (via nvm), Ollama (with GPU detection and version
checking), and NemoClaw, then runs onboard.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- fix-coredns.sh: read nameserver from container /etc/resolv.conf instead
  of docker bridge gateway IP (172.17.0.1 doesn't serve DNS in Colima)
- onboard.js: run CoreDNS fix on all macOS, not just when Colima socket
  detected (Docker Desktop has same issue), dedupe sandbox allocated spam

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
k3s-inside-Docker has broken DNS everywhere, including DGX Spark (Linux).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Instead of hardcoding "nemoclaw", read the default sandbox from
~/.nemoclaw/sandboxes.json. Falls back to openshell sandbox list,
then "nemoclaw" as last resort.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add install.sh for automated NemoClaw setup
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ence-setup

Skip inference verification in setup flows
- detectGpu() now returns type (nvidia/apple), name, core count
- Apple Silicon reports unified memory, marked nimCapable: false
- Onboard shows Apple GPU info but notes NIM requires NVIDIA
- --gpu flag only passed to openshell for NVIDIA GPUs

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Old syntax `nemoclaw connect` no longer exists. The rearchitected CLI
uses `nemoclaw <sandbox-name> connect`. Updated README, quickstart,
commands reference, and all other docs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- ensureApiKey() now runs before any other step so the key is always
  available when creating the provider
- sandboxConnect() restarts the 18789 port forward if it died

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The API key is injected by openshell via the provider config, not
needed as an env var inside the sandbox. The ${NVIDIA_API_KEY} literal
caused a noisy warning on every openclaw command.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Prevents silent exit under set -euo pipefail.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…scanning

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add uninstall script for NemoClaw and OpenShell cleanup
openshell policy set requires version field. The fallback paths in
applyPreset() generated YAML without it when policy get returned
empty or had no network_policies section.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Node built-in test runner, zero dependencies, runs in ~1s.
Covers CRUD, schema validation, preset loading, GPU detection,
CLI dispatch exit codes. Run with: npm test

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Auto-select vLLM or Ollama if already running (no prompt needed)
- Show Ollama as option in wizard for all platforms
- Offer to install Ollama via Homebrew on macOS
- Create ollama-local provider pointing at host.docker.internal:11434

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
mafueee added 27 commits March 24, 2026 20:38
- Add persistent config file (~/.config/nemoclaw/ports.json) with
  loadConfig/saveConfig/resetConfig/getPortSources helpers
- Update port resolution order: env var → config file → default
- Add server CRUD endpoints: PUT /api/ports, POST /api/ports/reset,
  POST /api/ports/auto-resolve
- Rewrite PortManager.tsx with inline editing, validation, source
  badges, save/reset/auto-resolve actions, and restart reminders
- Add CSS for port editing UI (inputs, badges, banners, actions)
- Update API client with new types and methods
- Add comprehensive tests (36 unit + 12 component)
- Update README with GUI port management documentation
The loadPortsModule() function used a broken cache clearing mechanism
(loadPortsModule._cache?.[]) that never actually busted Node's require
cache. Fixed to use the standard require.cache[resolvedPath] deletion.
The frontend sends 'endpointUrl' and 'credentialEnv' but the backend
was destructuring 'endpoint' and 'apiKeyEnv', causing the values to
be silently dropped.
- Added dedicated Google Gemini provider (AI Studio endpoint)
- Added gemini-3-flash to both Gemini and OpenRouter provider model lists
- Includes gemini-2.5-pro, gemini-2.5-flash, gemini-2.0-flash variants
- Extract shared PROVIDERS array into gui/src/data/providers.ts
- OnboardWizard step 3 now shows all 6 providers: NVIDIA Cloud, Ollama,
  OpenRouter, Google Gemini, vLLM, and NIM Local
- Each provider shows relevant config fields (API key, endpoint URL,
  model selector) based on its definition
- InferenceConfig.tsx imports from shared module (no duplication)
- Added tests verifying all providers are visible in wizard
- Updated README to document Gemini and expanded onboard wizard
…- Backend: add gateway start/stop, sandbox destroy, onboard execute (SSE),\n policy apply/remove, and chat message proxy API endpoints\n- PolicyEditor: sandbox selector + Apply/Remove toggle buttons per preset\n- OnboardWizard: Deploy Sandbox button with real-time SSE progress\n- SandboxManager: Destroy button with confirmation dialog\n- ChatInterface: real agent proxy via sandbox exec\n- DashboardPage: gateway Start/Stop toggle in stats row\n- api/client.ts: all new typed API methods\n- Tests: 75/75 pass — verify new features and absence of CLI references\n- README: updated dashboard features table
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.