Ghostpipe
Connect files in your codebase to user interfaces
- Apps can only see the files you explicitly share with them
- Your data lives in your codebase and under version control
- No account or installation needed to use a ghostpipe app
- Keep using the dev tools (editor, ai agent) you're used to
Table of Contents
- Examples
- Quickstart (Excalidraw)
- How it works
- Installation
- Usage
- Example Applications
- Local development
- What Next?
- Shout-outs
- License
Examples
Excalidraw
Swagger / OpenAPI
N8N (Proof of Concept)
Config File Support
Diff Mode
Quickstart (Excalidraw)
ghostpipe https://excalidraw.ghostpipe.dev
Open the link and draw something.
How it works
Ghostpipe uses yjs and webrtc to connect codebase files with applications. Chokidar is used to watch for file changes locally. Connected applications use pipe and signaling query params to connect to yjs over webrtc and read the file contents.
Installation
Usage
Basic Usage
Connect a file to a web interface:
Examples:
ghostpipe https://excalidraw.ghostpipe.dev # Will prompt for file or create one ghostpipe https://swagger.ghostpipe.dev api.yml # Connect api.yml to Swagger interface
Configuration-based Usage
Use interfaces defined in configuration file:
ghostpipe # Uses ghostpipe.config.json or ~/.config/ghostpipe/config.json ghostpipe --verbose # Enable verbose logging
Diff Mode
Compare current working directory files with a git branch:
ghostpipe [url] [file] --diff # Compare with 'main' branch (default) ghostpipe [url] [file] --diff develop # Compare with 'develop' branch ghostpipe [url] [file] --diff feature-123 # Compare with 'feature-123' branch
When diff mode is enabled, the tool will:
- Share your current working directory files
- Also send the base version of each file from the specified git branch
- Allow interfaces to display diffs between the current version and the base branch version
- Only works in git repositories
Configuration
Create a ghostpipe.config.json file in your project root or ~/.config/ghostpipe.json:
{
"signalingServer": "wss://signaling.ghostpipe.dev",
"interfaces": [
{
"name": "OpenAPI",
"host": "https://swagger.ghostpipe.dev",
"file": "openapi.yml"
},
{
"name": "Excalidraw",
"host": "https://excalidraw.ghostpipe.dev",
"file": "excalidraw.txt"
}
]
}Options
--verbose: Enable detailed logging--diff [branch]: Base branch for diff comparison (defaults to 'main' if no branch specified)--version: Show version information--help: Display help information
Example Ghostpipe Applications
Local development
- clone the repo
npm installnpm link- now you should be able to run
ghostpipefrom any project
What Next?
Ghostpipe is mostly a proof of concept at this point. If you're interested in contributing here are some ideas:
- Add ghostpipe support to an existing open source tool (like hoppscotch or drawdb)
- Add ghostpipe support to your own software
- Contribute to this project (directory support, tests, etc.)
Shout-outs
Shout out to Yjs and Chokidar, two key ingredients to getting this to work.
License
MIT




