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
- Examples
- Quickstart (Excalidraw)
- How it works
- Installation
- Usage
- Example Applications
- Local development
- What Next?
- Shout-outs
- License
npm install -g ghostpipeghostpipe https://excalidraw.ghostpipe.devOpen the link and draw something.
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.
npm install -g ghostpipeConnect a file to a web interface:
ghostpipe [url] [file]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 interfaceUse interfaces defined in configuration file:
ghostpipe # Uses ghostpipe.config.json or ~/.config/ghostpipe/config.json
ghostpipe --verbose # Enable verbose loggingCompare 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' branchWhen 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
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"
}
]
}--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
- clone the repo
npm installnpm link- now you should be able to run
ghostpipefrom any project
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 out to Yjs and Chokidar, two key ingredients to getting this to work.
MIT




