Hara Desktop
The native desktop app — its verified engine, optional managed CLI, personal models, and user-added enterprise Hara Control connections.
What it is
Hara Desktop is the native shell over the same Hara engine as the CLI. It includes a verified
engine and runtime, so it works on a machine with no Node.js or npm. Sessions and protected local state
are shared with the CLI under ~/.hara: start a chat in the app, continue it from the CLI, or vice versa.
Two minds, physically separated:
- Assistant — one persistent conversation (synced with your WeChat gateway threads), plus a collapsed automations timeline (cron runs, one line each, never mixed with your chats).
- Projects — open a folder, work in it. Workspace groups, per-session model/thinking switch,
inline approvals, diffs,
@filementions.
The composer does what you'd expect from a modern agent app: markdown-rendered replies, paste
images straight in, @ pops a fuzzy file autocomplete, a live context meter with one-click
compact when the window fills up, and ↺ rewind on any of your messages to fork the
conversation back to that point.
Install
Download from hara.run or the GitHub releases:
| Platform | File |
|---|---|
| macOS (Apple Silicon) | Hara_x.y.z_aarch64.dmg |
| macOS (Intel) | Hara_x.y.z_x64.dmg |
| Windows | Hara_x.y.z_x64-setup.exe or .msi |
| Linux | .deb / .rpm |
Published macOS builds are signed and notarized. Windows and Linux packages are checked in the release pipeline before they are advertised by the updater.
First run
- Launch — the app starts its bundled engine automatically.
- Open Settings → AI & models. Pick a preset cloud/local provider, or add an organization under Enterprise managed with its HTTPS Hara Control origin and a one-time enrollment code.
- Chat, or open a project folder.
Enterprise endpoints are never prefilled. You can retain multiple user-added organization connections, check their status, and switch which one new sessions use. The one-time code is cleared after enrollment; the resulting scoped device credential stays in Hara's protected local state.
Starting with Desktop 0.1.38 and Hara Control 0.1.15, the model catalog and thinking controls refresh from
the active session and enterprise connection. One existing company connection can expose both authorized
DeepSeek V4 Flash and Pro models after heartbeat/check; no new code or Key is required. The picker still
does not expose models outside the server catalog. The thinking controls are off, high, and max.
Native organization Desk
Desktop 0.1.45 turns the optional Groups module into a native, read-only organization Desk. Open Settings → Modules, show Groups, then choose any enrolled organization from the sidebar. Merely entering Groups reads only the local, redacted connection inventory: it does not open an embedded web page, fetch a board, start polling, or send a credential to the renderer.
Connect each organization explicitly from the CLI:
hara desk register \
--profile acme-work \
--url https://desk.example.com \
--key <desk-enrollment-key>Choose a task state and click Read organization board when you want a bounded snapshot. Opening one task then fetches its full dossier for that same organization. Selecting another organization in the Groups sidebar changes only what you browse; Use for new work is the separate action that changes the default route, and existing conversations remain pinned to the profile they started with.
Each native Desk credential is bound to the exact Hara Control enrollment and kept in protected engine state, separate from the legacy Desk MCP credential. Re-enrolling or replacing an organization under the same profile ID requires a new Desk registration and discards the old in-memory board cache. This first native surface is intentionally read-only; enrollment-key administration, task writes, token rotation, audit recovery, and owner operations remain in the managed Desk web/admin surface.
Already a CLI user? The app reads the same profiles, config, and sessions. See Organization Edition for CLI/Desktop profile switching.
Desktop and the command-line CLI
Desktop always updates the engine it owns. If a command-line hara is missing, Settings can install a
verified Desktop-managed CLI and keep that managed copy on the matching Hara version.
An existing npm, source checkout, standalone binary, or other manually managed hara remains independent;
Desktop does not silently replace it. Opt in explicitly if you want Desktop to take over the command path,
or update that installation with its own mechanism (hara update for current npm/standalone releases).
Updates
Desktop 0.1.38 checks for a newer version at launch and shows a visible in-app guide. You can review details, defer that version for 24 hours, or download it in the background with real progress while continuing to work. Restart remains explicit and waits until active tasks have stopped; the ready state explains that the bundled engine and any Desktop-managed CLI update together. The same controls remain available under Settings → App & updates.
Published in-app updates are minisign-verified. Starting with Desktop 0.1.46, the app checks Hara's
first-party assets.nanhara.com manifest and immutable mirrored payloads before GitHub. The mirrored
bytes and embedded signatures are identical to the protected GitHub release and are published only
after public-CDN byte and range verification. GitHub remains a secondary endpoint when the first-party
manifest returns a non-success response.
Desktop 0.1.50 also makes the endpoint check architecture-safe: every final macOS, Windows, and Linux executable must run a native read-only diagnostic and report that exact endpoint order before the release can be published. Signed macOS updater archives and DMGs are then re-downloaded and executed on ARM or through Rosetta as appropriate, in addition to Gatekeeper and notarization checks.
Desktop 0.1.51 bundles Hara CLI 0.138.0. A closed organization-owned loopback gateway is now explained as a local gateway that needs reconnection instead of a proxy failure. Adding or re-enrolling an organization saves it without changing the active personal or organization route unless you explicitly choose Add & switch.
Desktop 0.1.52 bundles Hara CLI 0.138.1. Model settings show the effective connection for the active working directory and can remove the current project's profile pin, including a pin inherited from a parent directory, for future conversations without rewriting existing ones. The Assistant home screen also accepts images, files, or one folder before the first turn through pickers, native file-system drops, or image paste. Model image capability and every path, type, and size decision remain enforced by the local engine.
Desktop 0.1.53 bundles Hara CLI 0.138.2 and makes the image-size boundary explicit. Picker, drop, and paste paths use the same 3.6 MB maximum advertised by the engine. An oversized image is blocked before model dispatch, remains visible with compression/cropping guidance, and is never silently rerouted to OCR. Images at or below the limit still follow the selected model's verified native-vision or configured vision-helper route.
Desktop 0.1.54 keeps the model and thinking controls usable during an active turn. A selection made while Hara is working is staged and labelled Next turn: it does not rewrite the route already running, and the next queued or new message waits for the local engine to accept the latest selection before it is sent. A policy, history-compatibility, or connection failure leaves that message unsent with an explicit recovery notice instead of silently falling back to the previous model.
Desktop 0.1.55 bundles Hara CLI 0.139.0 and replaces the Office workbench's pre-labelled success with evidence-bound validation. Verified appears only after the bytes, declared signature, size, and SHA-256 of the exact current revision pass. Save safe copy preserves the original PPTX, XLSX, or DOCX format, never overwrites an existing file, and reopens the output for digest verification. This is byte-identical validation and delivery; it does not claim Office editing or format conversion.
Desktop 0.1.45 users whose GitHub request already fails need one manual upgrade from the mainland
download page; later in-app upgrades use the first-party signed channel automatically. The public
global download page and
mainland download page also pin each installer to an immutable
version and verified SHA-256; the mainland page uses the assets.nanhara.com mirror only after every
required object has been downloaded back through the CDN and matched. Website download metadata and the
signed updater manifest remain separately validated and are each published last.
Desktop 0.1.37 also moves WeChat QR login into a Settings-owned lifecycle: the QR is rendered in the app, expired codes can be retried, and closing the panel cancels the login instead of leaving an unusable child process.
Shortcuts
⌘1 assistant · ⌘2 projects · ⌘, settings · ⌘N open project · ⌘F search