Finally, an AI that's actually yours.
It lives on your machine, learns how you work, and gets better the longer you use it. Open source. Self-hosted. Yours.
This is the Nous monorepo — the full codebase that builds into the desktop apps (macOS, Linux, Windows) and the web app. Maintained by Orthogonal.
Status: Active development. v1 launches in weeks. Contributions welcome — see CONTRIBUTING.md.
Nous is a local-first AI agent. It composes foundation models into a personal assistant that actually does things for you — routing tasks to the right model, learning from outcomes, and getting better over time.
Easy enough for your family to use. Powerful enough for engineers and business owners to rely on.
Four cognitive layers, modeled on how the human brain organizes intelligence.
| Layer | Role |
|---|---|
| Cortex | Decision, reflection, governance, escalation |
| Memory | Short-term, long-term, distillation, retrieval, knowledge indexing |
| Subcortex | Model routing, tools, workflows, multi-agent orchestration, sandbox, witness chain |
| Autonomic | Storage, embeddings, health, config, runtime |
- APM — the open registry for agent skills. Works across every major agent ecosystem. 5,000+ skills indexed.
- Orthogonal Research — papers and the thinking behind the lab.
| Language | TypeScript 5 (strict, ESM) |
| Runtime | Node.js 22+ |
| Packages | pnpm v10 workspace monorepo |
| Build | tsdown (libraries), electron-vite (desktop), Next.js (web) |
| Persistence | SQLite via better-sqlite3 |
| Validation | Zod — runtime schemas as single source of truth |
| RPC | tRPC v11 (web ↔ CLI) |
| Desktop | Electron 34, React 19, dockview-react v4 |
| Web | Next.js 14+ |
| Lint | oxlint (not eslint) |
| Test | vitest |
| CI | GitHub Actions — typecheck, lint, test, benchmark, build (Ubuntu, macOS, Windows) |
Prerequisites: Node.js 22+, pnpm 10+
git clone https://github.com/orthogonalhq/nous-core.git
cd nous-core
pnpm install
pnpm buildThis repo references four private submodules under .architecture/, .worklog/, .skills/, and .opencode/. They contain internal design documents, sprint working artifacts, SOP/process recipes, and the OpenCode harness adapter — the "code open, recipes private" stance.
For public clones, these submodule paths will return 404 on git submodule update --init. This is expected. The repo functions standalone — every public-facing surface (AGENTS.md, build, test, CI) has a conditional that detects whether the private clones are present and degrades gracefully when they are not. You do not need to initialize the submodules to build or run Nous from a public clone.
For internal contributors with access, initialize the submodules after cloning:
git submodule update --init --recursiveRun the web interface:
pnpm dev:webRun the CLI:
pnpm dev:cliRun the desktop app:
pnpm dev:desktopRun tests:
pnpm testElectron + VS Code terminals: The Electron dev flow requires a wrapper script that unsets
ELECTRON_RUN_AS_NODE.pnpm dev:desktophandles this automatically, but runningelectron-vite devdirectly from a VS Code or Claude Code terminal will fail silently because those terminals setELECTRON_RUN_AS_NODE=1. Seeself/apps/desktop/scripts/start-dev.mjs.
Electron binary download: pnpm v10's build-script allowlisting can prevent Electron's postinstall from running. If
pnpm installdoesn't download the Electron binary, runnode node_modules/electron/install.jsmanually.
better-sqlite3 on Windows: Requires build tools (
windows-build-toolsor Visual Studio C++ workload). If it fails to compile during install, that's why.
All code lives under self/, organized by cognitive layer.
self/cortex/*— core executor, prefrontal engine, governanceself/memory/*— STM, LTM, distillation, retrieval, access policy, knowledge indexself/subcortex/*— model routing, tools, workflows, sandbox, witness chain, multi-agent orchestration, scheduler, voice control, and moreself/autonomic/*— storage, embeddings, health, config, runtime abstractionself/shared/— types, interfaces, events, errors shared across all layersself/apps/*— web, CLI, desktop
See CONTRIBUTING.md for the contribution tier system, where to start, and how to navigate the codebase.
Model provider adapter contributors should start with the provider adapter docs in docs/content/docs/development/provider-adapters/ and the Anthropic reference leaf at self/subcortex/providers/src/providers/anthropic/.
Issues: Check the issue tracker for good-first-issue labels — real, scoped tasks at the integration layer.
Discord: Join the community — ask questions, share what you're building, see what's happening.
Licensed under the GNU Affero General Public License v3.0.
Built by Orthogonal.
