The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Nora listing page.
Run OpenClaw and Hermes fleets on your own infrastructure — from one control plane.
OpenClaw + Hermes · Docker + Kubernetes GA · 69 provider connections · Apache-2.0
📚 Documentation · Self-Hosting · Architecture · How Nora Compares · Press Kit · Changelog
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
@noraai/cli, and the @noraai/mcp-server for Claude Code, Gemini CLI, Claude Desktop, and Cursor.
![]() Operator dashboard |
![]() Fleet monitoring & needs-attention triage |
![]() Agent detail & lifecycle operations |
![]() Hermes WebUI embedded in Nora |
![]() Agent deploy flow | |
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:
Windows (PowerShell):
Windows requires PowerShell 7+. The default Windows PowerShell 5.1 is not supported — run the command above from a
pwsh7 session.
Kubernetes (Helm):
The command resolves the latest published chart; pin the reported version for reproducible production installs. The public OCI chart installs the full Nora control plane. See the Helm instructions for the required secrets and Ingress options.
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.
No API key yet? On installations with the local Docker target enabled, choose Launch local Docker demo on the Getting Started page. Nora deploys a working agent against its built-in deterministic demo provider, so you can validate chat and the operator workflow with zero keys and zero model-usage cost. Kubernetes-only installations start by adding a model provider and deploying to an enabled cluster target.
For manual setup, environment variables, public-domain mode, TLS, Remote Docker, Kubernetes, NemoClaw, and experimental Proxmox LXC configuration, see the docs:
Full docs live at docs.norafleet.ai. 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 |
Full architecture write-up — system map, queue/worker boundaries, RBAC, migration contract, deployment topologies — is in docs/concepts/architecture.
| 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 |
| Deployment targets | Docker and k3s/Kubernetes (GA); Remote Docker BYOC and Proxmox unprivileged LXC (experimental) |
| Sandbox profiles | Standard; NemoClaw (experimental, not available on Proxmox) |
| Secrets at rest | AES-256-GCM (provider keys, integrations, backups) |
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.
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, Gemini CLI, 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.
Gemini CLI users can install the repository extension directly. The installer prompts for the Nora API URL and stores the workspace API key as a sensitive extension setting:
See the MCP guide for Gemini CLI, Claude Desktop, and Cursor configuration, the tool list, and security notes.
@noraai/mcp-server, published to the official MCP Registry) plus per-agent MCP server management — operate the fleet from Claude Code, Gemini CLI, Claude Desktop, or Cursor, and wire MCP tools into individual agents.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.)disk_gb is metadata and operators must monitor Docker storage. Kubernetes adds workload resource limits and provisioned storage requests. 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. Experimental Proxmox placement uses unprivileged LXC, which remains a shared-kernel boundary and is not presented as VM-grade isolation. See the isolation model.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.
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.
If Nora is useful to you, a ⭐ on the repo helps other self-hosters find it.
This project is open source under the Apache License 2.0.