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

Dev Environment Setup

Hone is a monorepo of independent packages with no workspace manager. Each package manages its own dependencies.

Prerequisites

ToolPurposeInstall
BunRuntime and test runner for core packagescurl -fsSL https://bun.sh/install | bash
RustBuilding Perry compiler and native FFI cratescurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Node.jsRuntime for hone-themes (Jest), hone-extensions (Vitest), hone-api (tsc)Download from nodejs.org or use nvm
Xcode CLI ToolsmacOS system linker (required for Perry)xcode-select --install

Clone the Repository

git clone https://github.com/HoneIDE/hone.git
cd hone

Build the Perry Compiler

Perry lives in a sibling directory. Clone and build it first:

cd ..
git clone https://github.com/nicktypemern/perry.git
cd perry
CARGO_PROFILE_RELEASE_LTO=off cargo build --release -p perry
CARGO_PROFILE_RELEASE_LTO=off cargo build --release -p perry-ui-macos
cd ../hone

The CARGO_PROFILE_RELEASE_LTO=off flag is mandatory — without it, the macOS linker cannot process the resulting bitcode.

Install Dependencies

Each package manages its own node_modules. Install them individually:

# Bun-based packages
cd hone-core && bun install && cd ..
cd hone-editor && bun install && cd ..
cd hone-terminal && bun install && cd ..
cd hone-relay && bun install && cd ..
cd hone-build && bun install && cd ..

# Node-based packages
cd hone-themes && npm install && cd ..
cd hone-extensions && npm install && cd ..
cd hone-api && npm install && cd ..

There is no top-level package.json or npm install at the repo root.

Verify the Setup

Run tests in a couple of packages to confirm everything works:

cd hone-core && bun test
cd ../hone-editor && bun test

If tests pass, your environment is ready.

Optional: Build the IDE

Once Perry is built and dependencies are installed, you can compile the IDE:

cd hone-ide && perry compile src/app.ts --output hone-ide
./hone-ide

This produces a native macOS binary that launches the full IDE.

Troubleshooting

bun: command not found: Bun is not on your PATH. Run the install script again or add ~/.bun/bin to your PATH.

perry: command not found: The Perry binary is at ../perry/target/release/perry. Either add it to your PATH or use the full path.

Linker errors when compiling with Perry: Rebuild Perry with LTO disabled: CARGO_PROFILE_RELEASE_LTO=off cargo build --release -p perry.

Test import errors (Cannot find module 'bun:test'): You are running the test with the wrong runner. Use bun test, not npx vitest or npx jest, for packages that import from bun:test.