Architecture Overview
Hone is a native IDE built in TypeScript and compiled to native binaries via the Perry AOT compiler. Perry compiles TypeScript directly to machine code through Rust codegen – no V8 or Node.js exists at runtime. The generated binaries link against libperry_stdlib.a (the Perry runtime) and platform-specific UI libraries (perry-ui-macos, perry-ui-ios, perry-ui-windows).
Compilation Pipeline
TypeScript source
|
v
Perry compiler (TS → Rust codegen)
|
v
LLVM IR
|
v
Native binary
+ libperry_stdlib.a (runtime library)
+ perry-ui-{platform} (macOS / iOS / Windows / Linux / Android / Web)
Package Composition
The IDE is assembled from three main packages plus backend services:
hone-ide (workbench shell)
├── hone-editor (embeddable code editor)
│ ├── core/ — platform-independent (buffer, cursor, search, diff, LSP, DAP)
│ ├── view-model/ — reactive state bridge (EditorViewModel)
│ └── native/ — Rust FFI per platform (Metal, Direct2D, Cairo, WASM)
├── hone-core (headless IDE services)
│ ├── workspace — project management, file watching
│ ├── settings — layered settings (language > workspace > user > defaults)
│ ├── git — built-in git operations
│ ├── search — workspace-wide search
│ ├── LSP — language server protocol management
│ ├── DAP — debug adapter protocol management
│ ├── AI — provider registry, inline completion, chat, agent, review
│ ├── extensions — extension registry and lifecycle
│ ├── tasks — task runner
│ ├── formatting — code formatting
│ ├── telemetry — usage telemetry
│ ├── sync — cross-device sync client
│ └── changes queue — batched change processing
└── hone-terminal (terminal emulator)
├── VT parser
├── PTY management
└── cross-platform Rust FFI
Backend Services
Four server-side services support the IDE:
| Service | Host | Port | Purpose |
|---|---|---|---|
| hone-auth | auth.hone.codes | 8445 | Magic-link login, device pairing, JWT tokens, subscriptions |
| hone-relay | sync.hone.codes | 8443/8444 | WebSocket rooms for cross-device delta sync, SQLite persistence |
| hone-marketplace | marketplace.hone.codes | 8446 | Plugin search, download, publish |
| hone-build | — | 8447 | Plugin cross-compilation via perry-hub workers |
All backend services are also compiled to native binaries via Perry and run on webserver.skelpo.net (84.32.223.50, Ubuntu 24.04).
Supporting Packages
| Package | Purpose |
|---|---|
hone-api | Public extension API types (@honeide/api) – pure declarations, zero runtime |
hone-extension | V2 plugin SDK (@hone/sdk), Rust plugin host, marketplace client, CLI |
hone-extensions | 11 built-in language extensions (TypeScript, Python, Rust, Go, etc.) |
hone-themes | 15 VSCode-compatible color themes (@honeide/themes) |
hone-brand | Logos, colors, typography, brand guidelines |
Testing
Each package is tested independently – there is no monorepo test runner:
hone-core: 649+ tests viabun testhone-editor: 353 tests viabun testhone-terminal: 163 tests viabun testhone-relay: 48 tests viabun testhone-build: 21 tests viabun testhone-themes: 452 tests via Jesthone-extensions: Vitesthone-api: type-check only (tsc --noEmit)