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 buildRun 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.
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.
