<p align="center"> <a href="https://github.com/solomon2773/nora/raw/master/.github/readme-assets/walkthrough.mp4"> <img src=".github/readme-assets/walkthrough.gif" alt="Watch the Nora walkthrough" width="900" /> </a> </p> <p align="center"> <sub>โถ <b><a href="https://github.com/solomon2773/nora/raw/master/.github/readme-assets/walkthrough.mp4">Watch the walkthrough</a></b></sub> </p>
What Is Nora?
Nora is the self-hosted AI agent ops platform for running autonomous agent fleets on infrastructure you control โ whether you standardize on OpenClaw, Hermes, or keep both available in the same operator surface.
Most teams running agents in production eventually rebuild the same layer around the runtime itself: deploy workflows, secrets, monitoring, logs, terminal, templates, and a separate admin surface. Nora exists so that layer doesn't have to be rewritten every time the runtime conversation changes. Operator workflows live under /app; platform-wide admin lives under /admin.
โ Why Nora ยท Runtime model ยท Deployment footprint
Features
- Deploy & operate runtimes โ provision OpenClaw and Hermes agents to Docker or Kubernetes (both GA, official Helm chart) with full lifecycle controls: deploy, start/stop, restart, redeploy, and version history.
- Migrate existing runtimes โ adopt agents you already run via uploaded bundles or live Docker/SSH inspection.
- Live operator access โ streaming logs, an interactive terminal into running containers, a file browser/editor, and the OpenClaw gateway & Hermes dashboard embedded in the operator UI.
- Monitoring & alerting โ per-agent metrics and cost, a fleet needs-attention roll-up (errored, stuck, over-budget, stalled telemetry), and user-defined alert rules delivered to your channels.
- Budgets & scheduled runs โ per-agent LLM budget hard caps with auto-pause, plus recurring cron schedules for agent runs with queue retries and sweep guards.
- Secrets that fail closed โ provider keys AES-256-GCM encrypted at rest and synced to running runtimes; production refuses to boot without a valid encryption key; SSH host-key pinning protects remote (BYOC) Docker hosts.
- Network isolation โ baseline Kubernetes NetworkPolicy ingress isolation with admin-managed CIDR allow rules, and an experimental NemoClaw hardened sandbox for untrusted code.
- Agent Hub โ installable, versioned starter templates to go from zero to a working agent fast.
- Integrations โ 69 integration providers (source control, chat, cloud, observability, vector DBs, automation) and 17+ LLM providers; expose connected integrations to agents as per-agent MCP servers.
- Automate everything โ a public REST API (OpenAPI 3.1), the
@noraai/cli, and the@noraai/mcp-serverfor Claude Code, Claude Desktop, and Cursor. - Workspaces & RBAC โ multi-tenant workspaces with ranked roles, a platform admin surface, account event history, and encrypted managed backups.
Screenshots
<table> <tr> <td align="center" width="50%"> <img src=".github/readme-assets/proof-operator-dashboard.png" alt="Operator dashboard" /><br /> <sub><b>Operator dashboard</b></sub> </td> <td align="center" width="50%"> <img src=".github/readme-assets/proof-operator-fleet.png" alt="Fleet monitoring" /><br /> <sub><b>Fleet monitoring & needs-attention triage</b></sub> </td> </tr> <tr> <td align="center" width="50%"> <img src=".github/readme-assets/proof-operator-deploy-flow.png" alt="Agent deploy flow" /><br /> <sub><b>Agent deploy flow</b></sub> </td> <td align="center" width="50%"> <img src=".github/readme-assets/proof-operator-openclaw-ui-tab.png" alt="Embedded OpenClaw gateway UI" /><br /> <sub><b>Embedded OpenClaw gateway UI</b></sub> </td> </tr> </table>Quick Start
Requirements: macOS 12+, Linux, or Windows 10+ (WSL2), with Docker Engine + Compose v2. The installer checks for Docker, Git, and OpenSSL and installs anything missing.
macOS / Linux / WSL2:
curl -fsSL https://raw.githubusercontent.com/solomon2773/nora/master/setup.sh | bash
Windows (PowerShell):
iwr -useb https://raw.githubusercontent.com/solomon2773/nora/master/setup.ps1 | iex
Windows requires PowerShell 7+. The default Windows PowerShell 5.1 is not supported โ run the command above from a
pwsh7 session.
The installer verifies prerequisites, generates or preserves secrets, optionally creates a bootstrap admin, picks free local ports when the defaults are busy, and starts the stack. Once it finishes, open the URL printed by setup. Local mode defaults to http://localhost:8080, but setup may select another port such as 8081 on a busy workstation. Then follow the first-15-minutes walkthrough.
For manual setup, environment variables, public-domain mode, TLS, Kubernetes, NemoClaw, and planned Proxmox configuration, see the docs:
- Self-hosting guide
- Environment variables reference
- Provisioner backends (Docker and k3s/Kubernetes are GA; NemoClaw is experimental; Proxmox is planned)
- TLS and public domains
- Fronting a launch with Cloudflare โ edge caching, rate limiting, and spike absorption for the single-host deploy
Documentation
Full docs live at noradocs.solomontsao.com. The MDX source is in docs/.
| Section | What's there |
|---|---|
| Quick Start | Install and validate your first agent in 15 minutes |
| Concepts | Architecture, agents, runtimes, workspaces, LLM providers, Agent Hub |
| Configuration | Platform modes, env vars, provisioner backends, TLS / public domains |
| Guides | Deploy agent, providers, integrations, channels, monitoring, alert rules, backups, Agent Hub, NemoClaw |
| API Reference | Auth, workspaces, agents, channels, integrations, providers, monitoring, alert rules |
| Support | FAQ, troubleshooting |
Architecture
Nginx
โโโ / โ frontend-marketing (Next.js)
โโโ /app/* โ frontend-dashboard (Next.js)
โโโ /admin/* โ admin-dashboard (Next.js)
โโโ /api/* โ backend-api (Express.js)
โโโ PostgreSQL
โโโ Redis + BullMQ (deployments, clawhub-jobs, backups, alert-deliveries)
โโโ worker-provisioner
โโโ worker-backup
โโโ runtime adapters/profiles (Docker GA ยท k3s/k8s GA ยท NemoClaw experimental ยท Proxmox planned)
Full architecture write-up โ system map, queue/worker boundaries, RBAC, migration contract, deployment topologies โ is in docs/concepts/architecture.
Tech Stack
| Layer | Technology |
|---|---|
| Reverse proxy | Nginx |
| Frontends | Next.js 16, React 19, Tailwind CSS |
| Backend API | Express.js 5, Node.js 24 LTS |
| Auth | JWT, HttpOnly cookies, bcryptjs, provider OAuth bridge |
| Database | PostgreSQL 15 |
| Queue | BullMQ + Redis 7 |
| Runtime families | OpenClaw, Hermes |
| Provisioning backends | Docker and k3s/Kubernetes (GA); NemoClaw (experimental sandbox); Proxmox (planned) |
| Secrets at rest | AES-256-GCM (provider keys, integrations, backups) |
Public REST API, CLI, and MCP
Workspace-scoped API keys (bearer-only, prefixed nora_, HMAC-hashed at rest, scope-based) drive a stable subset of the REST surface. Issue keys at /app/workspaces/<id>/api-keys.
export NORA_TOKEN="nora_..."
curl -H "Authorization: Bearer $NORA_TOKEN" https://your-nora.example.com/api/agents
A small CLI lives in cli/ (@noraai/cli): run nora login once to save your host and API token, then nora workspaces, nora agents, and nora monitoring wrap the same REST surface. nora doctor runs an admin-only control-plane health check, and nora mcp launches the MCP stdio server. See the API reference for the supported endpoints and scopes.
Operate Nora from Claude Code, Claude Desktop, or Cursor: the mcp-server/ package (@noraai/mcp-server) exposes the same API as Model Context Protocol tools โ deploy agents, control their lifecycle, and read fleet metrics, events, and per-agent cost from any MCP client. Destructive deletion stays disabled unless explicitly opted in.
claude mcp add nora \
--env NORA_API_URL=https://your-nora.example.com \
--env NORA_API_KEY=nora_... \
-- npx -y @noraai/mcp-server
See the MCP guide for Claude Desktop/Cursor config, the tool list, and security notes.
Standards & isolation
- MCP โ shipped. A control-plane MCP server (
@noraai/mcp-server, published to the official MCP Registry) plus per-agent MCP server management โ operate the fleet from Claude Code / Desktop / Cursor, and wire MCP tools into individual agents. - OpenTelemetry GenAI โ available. OTLP + Prometheus export of runtime telemetry under the
gen_ai.*semantic conventions โ per-exchange chat spans plus token/cost/resource metrics flow into the Grafana / Datadog / Langfuse stack you already run. (Per-tool-call sub-spans depend on runtime event streams and remain on the roadmap.) - A2A โ on the roadmap. Agent Cards / Agent-to-Agent discovery for managed OpenClaw and Hermes agents.
- Isolation, per deploy target. Standard Docker and Kubernetes runs use container namespaces plus operator-set CPU / RAM / disk limits; the experimental NemoClaw profile hardens untrusted code with a non-root user, all Linux capabilities dropped,
no-new-privileges, Landlock + seccomp, and default-deny egress; Proxmox VM placement (planned) is the future hardware-isolation tier. See the isolation model.
Roadmap
- NemoClaw hardening (high priority) โ mature the experimental secure-sandbox profile end to end: enablement, policy controls, approvals, telemetry, and validation.
- Proxmox execution target โ complete the planned LXC deployment path with lifecycle operations, log streaming, telemetry, and smoke coverage.
- Hermes/OpenClaw parity โ close runtime gaps across validation, logs, terminal access, monitoring, and failure reporting.
- First-run operator UX โ a tighter path from install to the first deployed, validated agent.
- Account-scoped monitoring โ account-level health roll-ups across workspaces, agents, cost, and alerts, with drill-downs.
- Auth & key-sync hardening โ key rotation, audit trails, and recovery from partial sync failures.
- Agent Hub ergonomics โ better template discovery, install/configure flows, and post-install validation.
- A2A support โ Agent Cards / agent-to-agent discovery for managed runtimes.
Development
# Docker (recommended)
docker compose up -d
docker compose logs -f backend-api
# Tests
cd backend-api && npx jest --no-watchman
cd e2e && npm test
Start with CONTRIBUTING.md for contributor guidance. CLAUDE.md documents the repo layout, development commands, and subtree ownership for humans and AI coding agents alike.
Contributing
New here? Browse good first issues for small, self-contained starting points, then skim CONTRIBUTING.md.
Strong contribution areas: runtime adapter work ยท operator and admin UX ยท provisioning and lifecycle orchestration ยท integrations and channels ยท test and CI hardening ยท self-hosted deployment ergonomics.
Typical workflow: fork โ branch (feature/...) โ commit โ pull request.
Community
If Nora is useful to you, a โญ on the repo helps other self-hosters find it.
License
This project is open source under the Apache License 2.0.