Plugin Development Overview
Hone supports two paths for extending the editor, each suited to different use cases.
V1 Built-in Extensions
Located in hone-extensions/. These ship with the IDE binary.
- Primarily for language support: LSP servers, syntax definitions, snippets
- Defined by a
hone-extension.jsonmanifest - Loaded by
ExtensionRegistryinhone-core - 11 built-in extensions ship today (TypeScript, Python, Rust, Go, C++, HTML/CSS, JSON, Markdown, Docker, TOML/YAML, Git)
Best for: core language features that every user needs out of the box.
V2 Independent Plugins
Located in hone-extension/ (the SDK package). These are standalone native plugins distributed through the Hone marketplace.
- Compiled to native binaries via Perry
- Use
@hone/sdk(HonePluginbase class) - Distributed and installed through the Hone marketplace
- Three execution tiers based on declared capabilities (InProcess, PluginHost, IsolatedProcess)
- Full access to editor, filesystem, UI, network, and process APIs depending on tier
Best for: third-party tools, custom UI panels, external integrations, anything beyond built-in language support.
Which Path to Choose
| Criteria | V1 Built-in | V2 Plugin |
|---|---|---|
| Ships with IDE | Yes | No (marketplace) |
| Language support (LSP, syntax) | Primary use case | Possible but not typical |
| Custom UI panels | No | Yes |
| Network access | No | Yes (Tier 3) |
| Process spawning | No | Yes (Tier 3) |
| Marketplace distribution | No | Yes |
| Requires Perry compilation | No (data-driven) | Yes |
Choose V1 if you are adding a language to the IDE itself. Choose V2 if you are building a standalone tool, integration, or any plugin for the marketplace.