Building Your Own Extensions
Build extensions that add new capabilities to Nimbalyst -- custom editors, AI tools, panels, themes, and more. Extensions are self-contained packages with a manifest that declares their contributions.
Nimbalyst is open source, and the built-in extensions live alongside the app source in github.com/nimbalyst. The fastest way to learn the extension API is to read those built-in extensions.
What Can Extensions Do?
Custom Editors -- New ways to view and edit file types (spreadsheets, diagrams, 3D models)
AI Tools -- Tools that Claude can use to interact with your extension
AI Completions -- Call chat models (Claude, OpenAI, LM Studio) directly from your extension
Panels -- Sidebar panels, fullscreen views, or floating windows
Themes -- Custom color themes
Slash Commands -- Commands users can invoke from the chat
File Icons -- Custom icons for file types in the sidebar
New File Types -- Add entries to the "New File" menu
Quick Start
The recommended workflow is to create and iterate on extensions from inside Nimbalyst:
Enable Extension Dev Tools in Settings > Advanced
Use
File > New Extension Projector ask Claude to run/new-extensionDescribe the extension you want Claude to build from the starter scaffold
Ask Claude to build and install the extension with
extension_buildandextension_installUse
extension_reloadfor rebuild + reinstall during iteration
See Getting Started for a step-by-step walkthrough.
Project Structure
A typical extension project:
Development Workflow
Create -- Use
/new-extensioninside Nimbalyst or copy a starter projectDevelop -- Edit files in your extension project
Build -- Claude uses
extension_buildto compileInstall -- Claude uses
extension_installto load itTest -- Open a file with your extension's file type
Iterate -- Claude uses
extension_reloadfor hot updates
Core Concepts
The Extension Manifest
Every extension needs a manifest.json that describes what it provides. At minimum:
See Manifest Reference for the complete schema.
The EditorHost Contract
Custom editors receive a host prop that handles all communication with Nimbalyst -- loading and saving files, tracking dirty state, theme changes, and AI diff mode. The useEditorLifecycle hook wraps the host into a single, clean API.
See Custom Editors for the full guide.
AI Tool Integration
AI tools let Claude interact with your editor programmatically. Define tools with a name, description, input schema, and handler function. Claude reads the description to decide when to call your tool.
See AI Tools for examples and best practices.
Permissions
Extensions declare the capabilities they need:
filesystem
Read and write files in the workspace
ai
Register AI tools and call chat/completion models directly
network
Make HTTP requests to external services
Documentation
Create your first extension in 10 minutes
Build editors for new file types
Add tools that Claude can use
Complete manifest.json schema
TypeScript types and interfaces
Prerequisites
Nimbalyst with Extension Dev Tools enabled (Settings > Advanced)
Node.js 18+
Basic knowledge of React and TypeScript
Built-in Extension Examples
Study the built-in extensions for patterns and best practices:
Excalidraw
.excalidraw
Imperative API via refs, 19 AI tools
CSV Spreadsheet
.csv, .tsv
RevoGrid with custom save, formula support
DataModelLM
.datamodel
Zustand store, screenshot export
MockupLM
.mockup.html
iframe preview, AI generation
SQLite Browser
.db, .sqlite
Panel-based with Jotai, 9 AI tools
These are all in packages/extensions/ in the Nimbalyst repository on GitHub.
Last updated
