Skip to content
Projects

potlakai/nus-desktop has 32 GitHub stars and 6 forks. GitHot measured +2 stars in 24 hours. Last checked 2026-11-15 06:58 UTC. Last push 2026-11-12.

How these counts are measured

32 stars6 Forks +2 in 24h

Measured star growth

in 24h
+2
in 7 days
Collecting history
in 15 days
Collecting history
in 1 month
Collecting history

Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.

About

Nus Desktop: a local-first semester organizer that runs on your own AI. Reads your syllabi, maps every deadline, and proposes changes you approve first.

Productivity

README.md

Original

Nūs Desktop

The semester organizer that runs on your own AI, on your own machine. Import a real syllabus, see your whole semester as a living map, and let Nūs propose the next move. Nothing is saved without your review, and your coursework never leaves your computer except through the calls you configure below (see Privacy for the anonymous usage stats and how to turn them off).

You bring the AI (required)

Nūs has no server and no bundled model. It needs two keys, and they do different jobs:

1. Claude, for the desktop app. Reading syllabi, the Ask bar, and the chat thread all run on Anthropic's Claude, pinned to the mid-tier Sonnet model so a semester of use stays affordable.

  • If Claude Code is installed on your machine, Nūs finds it automatically and uses your existing subscription. Nothing to paste.
  • Otherwise, get an Anthropic API key (console.anthropic.com) and paste it in Settings → AI provider. It is encrypted on this device with your OS keychain and only ever used to call Anthropic.

2. Gemini, for the Companion overlay. The floating Knot that watches your screen and listens in meetings runs on its own key so live answers stay fast and cheap. Get a free Google Gemini key (aistudio.google.com/apikey) and paste it in Settings → Companion AI key, or in the Knot's own gear icon. The Gemini key covers the Companion's answers. Speech to text needs no key at all: Nūs transcribes on your own machine with whisper.cpp (see Voice below) and only falls back to a Gemini or OpenAI key if the local engine is missing. (OpenAI, Anthropic, and Nvidia keys also work for answering.)

The first-run walkthrough points at both cards.

Install and run

Grab Nus-Setup.exe (installer) or Nus-Portable.exe (no install) on Windows, or Nus-arm64.dmg (Apple Silicon) / Nus-x64.dmg (Intel) on a Mac, from a release, or run from source:

npm install
npm start

npm test runs the full assertion suite. npm run smoke boots and exits. npm run tour replays the walkthrough. npm run dist builds the installers. npm run setup:voice downloads the local speech engine (whisper.cpp plus the base English model, about 65 MB, once) into vendor/. The installers bundle the engine and fetch the model on first use, so only source builds need this step.

Why Windows warns you about the download

The installer is not code signed yet, so SmartScreen shows "Windows protected your PC", Publisher: Unknown publisher the first time you run Nus-Setup.exe. That is the absence of a certificate, not a detection. Click More info, then Run anyway. The build is reproducible from this repo, every release lists the SHA-512 of its artifacts in latest.yml, and Windows Defender scans it clean. Signing is wired and waiting on a certificate; see docs/release.md.

Why your Mac says it could not verify the app

Same reason. The Mac build is not notarized yet, so the first open says "Apple could not verify Nus is free of malware". Click Done, open System Settings › Privacy & Security, scroll to the Security section and press Open Anyway next to Nus, then confirm once. That is the only time it asks. The Mac build cannot update itself until it is notarized, so a new version means downloading the dmg again. Local voice (the on-device Whisper engine) is Windows-only for now; everything else is the same app.

Free and Pro

Nūs Free runs a whole semester with honest caps: 3 AI syllabus imports, 10 questions a day, 1 connected account, 1 automation rule, 20 Companion minutes a day with 7 days of history, 512 MB of storage. Pro ($9.99 a month) lifts them. Caps are counted locally; the plan itself is tied to your Nūs account (your account is an email and a plan, nothing else) and paid through Stripe Checkout. Card details never touch this app.

What's inside

  • Today: your dashboard. The Ask bar takes plain requests ("push the calc homework to Friday", "email my professor about an extension") and proposes the exact change before anything is written.
  • Voice: click the Knot on Today and just talk. Speech to text runs locally with whisper.cpp, so no key is needed and no audio leaves your computer. Your words and the streamed reply appear under the Knot, which lights up as it listens, thinks, and speaks. Files Nūs reads while thinking surface as stars on the constellation. Talking over a spoken reply interrupts it.
  • Map: every course, source, and open task as a draggable knowledge graph.
  • Calendar / Smart tasks / Semester: deadlines, task breakdowns with review, GPA projection that never guesses missing weights.
  • Knot: the Companion pane and a persistent chat thread that can create tasks, move dates, and draft emails, each with a confirm step.
  • Email: a professor-email drafter that works with no connection at all. Add your sending addresses and any draft opens pre-filled in Gmail with Open in Gmail (no Gmail account connection needed). Outlook connects read-only for the inbox brief and your writing style; sending through Outlook is a separate opt-in.

The Companion

The Knot floats on your desktop, keeps running after you close the dashboard, and comes back from the tray. Turn off Companion on the Knot pane removes it completely and releases the hotkeys until you turn it back on.

Click the Knot and type what you need ("show me how to add a chart"), or hold the push-to-talk key and say it. The Knot reads the screen once, a strand runs to the one control to click, and a bubble at the tip says the step. Click it and the Knot re-reads the screen for the next step; Esc winds it back. When the task is done you can Keep the steps, and the same ask in the same app replays them without a model call.

Point at a button, an error, or any spot on the Knot's display and press Ctrl+Shift+T: the strand runs to that control, you type a question about it, and the answer lands at the tip with "Walk me through it" to turn it into a step-by-step guide. Sensitive fields such as password boxes are refused. Pointing works on the display the Knot lives on; other monitors are next.

Keys Action
Ctrl+Shift+T (Windows) Point at what you need help with
Ctrl+Shift+Space (⌘⇧Space on a Mac) Hide or show the overlay
Ctrl+Shift+X (⌘⇧X) Panic: stop listening and vanish
Ctrl+Enter (⌘Enter) What should I do? (rebindable in Companion settings)

The overlay is concealed from screen sharing and recordings: the Knot, the strand and the bubbles do not appear in what you share. Follow the rules of every meeting, class, interview, or assessment you are in.

Privacy

Local-first by design. The database lives at %APPDATA%\Nus\data\nus.db (~/Library/Application Support/Nus/data/nus.db on a Mac) and everything Nūs knows stays on this device. The outbound calls are the AI providers you configured, the integrations you explicitly connect, and, if you sign in, the Supabase account check (email and plan, never content) plus Stripe when you buy Pro. There is no cloud sync of your coursework.

Anonymous usage stats (which features get used, on a random install id) help us see what works. Your coursework and what you type stay on your device. Turn it off in Settings. The full list of what is sent, where the install id lives, and how to switch it off is in docs/stats.md.

Stack

Electron, vanilla JS, sql.js (WASM SQLite). One process, two windows: the Companion overlay ships inside the app, so there is one installer, one settings store, one runtime.

License

MIT. See LICENSE.

The OAuth client IDs in src/config.js are gitignored but ship inside the installer, deliberately: Google documents desktop OAuth clients as public clients whose secret is not confidential, and Calendar and Outlook would not work for anyone without them. src/shipped-secrets.test.js is the tripwire that fails the build if a genuinely confidential credential ever lands in a packaged file. Bring your own credentials by creating that file locally; docs/credentials-needed.md walks through it.