Dev Environment Setup
Hone is a monorepo of independent packages with no workspace manager. Each package manages its own dependencies.
Prerequisites
| Tool | Purpose | Install |
|---|---|---|
| Bun | Runtime and test runner for core packages | curl -fsSL https://bun.sh/install | bash |
| Rust | Building Perry compiler and native FFI crates | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh |
| Node.js | Runtime for hone-themes (Jest), hone-extensions (Vitest), hone-api (tsc) | Download from nodejs.org or use nvm |
| Xcode CLI Tools | macOS 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.