Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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:

ServiceHostPortPurpose
hone-authauth.hone.codes8445Magic-link login, device pairing, JWT tokens, subscriptions
hone-relaysync.hone.codes8443/8444WebSocket rooms for cross-device delta sync, SQLite persistence
hone-marketplacemarketplace.hone.codes8446Plugin search, download, publish
hone-build8447Plugin 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

PackagePurpose
hone-apiPublic extension API types (@honeide/api) – pure declarations, zero runtime
hone-extensionV2 plugin SDK (@hone/sdk), Rust plugin host, marketplace client, CLI
hone-extensions11 built-in language extensions (TypeScript, Python, Rust, Go, etc.)
hone-themes15 VSCode-compatible color themes (@honeide/themes)
hone-brandLogos, colors, typography, brand guidelines

Testing

Each package is tested independently – there is no monorepo test runner:

  • hone-core: 649+ tests via bun test
  • hone-editor: 353 tests via bun test
  • hone-terminal: 163 tests via bun test
  • hone-relay: 48 tests via bun test
  • hone-build: 21 tests via bun test
  • hone-themes: 452 tests via Jest
  • hone-extensions: Vitest
  • hone-api: type-check only (tsc --noEmit)