https://github.com/hagicode-org/desktop
Electron desktop app for installing, running, monitoring, and updating HagiCode on developer machines.
https://github.com/hagicode-org/desktop
desktop-app developer-tools electron hagicode local-server react
Last synced: 18 days ago
JSON representation
Electron desktop app for installing, running, monitoring, and updating HagiCode on developer machines.
- Host: GitHub
- URL: https://github.com/hagicode-org/desktop
- Owner: HagiCode-org
- License: agpl-3.0
- Created: 2026-02-02T09:24:03.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-04-26T13:31:20.000Z (about 2 months ago)
- Last Synced: 2026-04-26T14:00:32.140Z (about 2 months ago)
- Topics: desktop-app, developer-tools, electron, hagicode, local-server, react
- Language: TypeScript
- Homepage: https://hagicode.com/desktop/
- Size: 13.4 MB
- Stars: 3
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Agents: AGENTS.md
Awesome Lists containing this project
README
# Hagicode Desktop
[简体中文](./README_cn.md)
Hagicode Desktop is the native control center for running and managing HagiCode Server on a developer machine.
## Product overview
The desktop app packages the HagiCode experience into a local-first workflow for setup, monitoring, upgrades, and day-to-day operations.
## Core capabilities
- Monitor local resources and service health from a desktop dashboard
- Start, stop, and switch embedded server versions without leaving the app
- Manage package sources, dependencies, and license information in one place
- Provide onboarding, tray integration, RSS updates, and bilingual UI support
- Offer agent executor choices such as Claude Code, Codex, and GitHub Copilot CLI
## Architecture at a glance
- `src/main/` - Electron main-process services for configuration, runtime control, and package management
- `src/preload/` - the bridge layer between desktop runtime and renderer UI
- `src/renderer/` - React-based desktop interface and Redux state
- `resources/` - packaged desktop assets
- `docs/` - deeper guides for development, signing, and storage sync
## Local development
```bash
npm install
npm run dev
npm run build:prod
npm run build:win:portable
npm run build:win:appx
npm run build:win:msix
npm run build:linux:appimage
npm run build:linux:zip
npm run build:mac:x64:dmg
npm run build:mac:arm64:zip
```
- `npm run dev` prepares the optional bundled portable toolchain, starts the renderer, watches Electron processes, and launches the app in development mode
- `npm run dev:steam-mode` boots development mode directly against a fixed extracted runtime so Steam mode startup can be verified quickly
- `npm run build:prod` runs the production build plus the smoke test used before packaging
- platform packaging commands now map directly to the CI matrix so local artifact verification can follow the same release contract
### Development bundled Node runtime
Source-mode development uses the shared Desktop runtime tree under `resources/components/node/runtime/`, matching the packaged Desktop layout under `resources/extra/runtime/components/node/runtime/`. There is no separate `.runtime/node-dev/` runtime or `bundled-dev` dependency source.
`npm run dev` runs `predev`, which stages the governed Desktop runtime payloads for supported platforms: the embedded .NET runtime, the bundled Node toolchain, the vendored code-server runtime, and the vendored OmniRoute runtime.
Those `prepare:*` commands now delegate the staging workflow to `hagiscript runtime install` with a Desktop-specific manifest, so the runtime layout now lands under `resources/components/...` while the install orchestration stays inside hagiscript.
Managed npm packages are installed into Desktop-owned writable runtime data under `userData[/dev]/runtimeData/node/`:
- Unix-like platforms: `userData/runtimeData/node/node/npmGlobal/bin` and `userData/runtimeData/node/node/npmGlobal/lib/node_modules`
- Windows: `userData/runtimeData/node/node/npmGlobal` and `userData/runtimeData/node/node/npmGlobal/node_modules`
### Development runtime troubleshooting
- Download failures: check network access to the pinned host in `resources/manifest.yml` under `desktopExtensions.embeddedNodeRuntime`, or pre-populate the staged archive cache used by the bundled toolchain preparation script.
- Unsupported platform/architecture: the command uses the platforms pinned in `resources/manifest.yml` under `desktopExtensions.embeddedNodeRuntime`; add a governed platform entry before expecting detection to succeed.
- Version mismatch: rerun `npm run prepare:bundled-toolchain:optional` after governance updates so the staged executable matches the active Node version.
## Related guides
- `docs/development.md` - local development notes and update-source configuration
- `docs/artifact-signing.md` - Windows signing setup
- `docs/azure-storage-sync.md` - downstream release synchronization details
- `docs/i18n-hagi18n.md` - Desktop locale maintenance with hagi18n YAML sources and generated runtime JSON