Slipway
# Slipway ⛵
**Build and ship real apps directly from Claude or ChatGPT — free, open source, and yours.**
[](https://github.com/Sandeepbhuiya29/Slipway/actions/workflows/ci.yml)
[](LICENSE)



*40-second demo of an app Claude built through Slipway — dashboard, signup, private per-user notes ([mp4 version](demo/slipway-demo.mp4)).*
Claude and ChatGPT can already write you an app. Getting it live is another story — git, hosting, databases, email services, push providers: a stack that was never built for you.
Slipway fixes that with one MCP ([Model Context Protocol](https://modelcontextprotocol.io)) server. Connect it, and the model **you already pay for** can scaffold apps, edit code, run live previews, share them at a public URL, store data, send email, send push notifications, deploy to real hosting, and hand you the finished repo. No meter, no credits, no lock-in: Slipway just executes what your model decides, on your machine, into your accounts.
```mermaid
flowchart LR
A["Claude / ChatGPT<br/>(the subscription you already have)"] -- MCP --> B["Slipway<br/>(your machine)"]
B --> C["Apps in ~/.slipway/apps<br/>plain directories — yours"]
B --> D["Live preview<br/>+ public share URL"]
B --> E["SQLite · SMTP email · Web Push"]
B --> F["Deploy: Vercel / Netlify / Cloudflare<br/>+ export to your GitHub"]
```
## The 60-second demo
```bash
git clone https://github.com/Sandeepbhuiya29/Slipway.git && cd Slipway
npm install && npm run build
claude mcp add slipway -- node "$PWD/dist/index.js"
```
Then tell Claude:
> "Build me a habit tracker with streaks. Keep the data in the database, give me a link to try it, and a public link I can open on my phone."
It scaffolds the app, writes the code, starts a preview, opens a `share_preview` tunnel, and hands you both URLs. Say "ship it" and it deploys; say "give me the repo" and `export_app` pushes the code to your own GitHub, secrets excluded.
## How it compares
| | Slipway | Hosted AI app builders |
|---|---|---|
| Price | Free, MIT-licensed | Their pricing, their terms |
| AI usage | Your existing Claude/ChatGPT subscription, any model tier | Depends on their integration |
| Where your code lives | Plain directories on your machine + your GitHub | Their platform |
| Hosting | Your Vercel/Netlify/Cloudflare accounts (free tiers, your domains) | Their infrastructure |
| Database | Built-in SQLite per app, zero setup | Their managed backend |
| Email / push | Any SMTP · Web Push with local VAPID keys | Their bundled providers |
| Lock-in if the company disappears | None — it's all on your disk | Everything |
| Inspect what the AI can do | Read `src/server.ts`, it's one file | Closed |
## The full tool surface (22 tools)
| Capability | Tools |
|---|---|
| Apps | `create_app` (static · react · api · fullstack · **saas with built-in user accounts**), `list_apps`, `delete_app` |
| Code | `write_file`, `read_file`, `list_files`, `delete_file`, `install_dependencies` |
| Preview | `start_preview`, `preview_logs`, `stop_preview` |
| **Share** | `share_preview` — free public HTTPS URL via Cloudflare quick-tunnel |
| Data | `query_database` — per-app SQLite, zero config |
| Secrets | `set_env`, `list_env` (values are write-only through the AI) |
| Deploy | `deploy` / `undeploy` — local hosting that **survives restarts**, or Vercel · Netlify · Cloudflare Pages |
| **Own it** | `export_app` — one call turns the app into your GitHub repo |
| Email | `send_email` — any SMTP provider |
| Push | `push_generate_keys`, `push_send` — Web Push, no third-party service |
| Meta | `server_status` |
**Plus a web dashboard**: run `node dist/index.js --http 8788` and open `http://localhost:8788` — every app with preview/share/deploy buttons and live logs. The `saas` template ships working signup/login (scrypt-hashed passwords, cookie sessions, per-user data in SQLite) with zero dependencies.
**New here? The full walkthrough with copy-paste prompts is in [GETTING_STARTED.md](GETTING_STARTED.md).**
## Connecting
**Claude Code**
```bash
claude mcp add slipway -- node /absolute/path/to/Slipway/dist/index.js
```
**Claude Desktop** — add to `claude_desktop_config.json`:
```json
{
"mcpServers": {
"slipway": { "command": "node", "args": ["/absolute/path/to/Slipway/dist/index.js"] }
}
}
```
**ChatGPT, claude.ai on the web, or your phone** — run the HTTP transport and tunnel it:
```bash
SLIPWAY_TOKEN=some-long-secret node dist/index.js --http 8788
cloudflared tunnel --url http://localhost:8788
```
Point the client's MCP connector at `https://<your-tunnel>/mcp` with header `Authorization: Bearer some-long-secret`. ChatGPT accepts remote MCP connectors in developer mode; claude.ai accepts custom connectors.
## Where things live
Apps are plain directories in `~/.slipway/apps/<name>` (override with `SLIPWAY_HOME`). Per app:
- `data.sqlite` — the database
- `.env` — secrets, injected on preview/deploy, never echoed back through the AI
- `.slipway-push.json` — Web Push VAPID keys; the private key never leaves your machine
Nothing is proprietary about the output: every app is ordinary code you can open in an editor, `export_app` to GitHub, or move anywhere.
## Email and push, without the SaaS
- **Email**: `set_env` the five SMTP values (`SMTP_HOST`, `SMTP_PORT`, `SMTP_USER`, `SMTP_PASS`, `MAIL_FROM`) — a Gmail app password is enough to start — and `send_email` works.
- **Push**: `push_generate_keys` gives your frontend a VAPID `applicationServerKey`; `push_send` delivers to any browser subscription. No OneSignal, no accounts.
## Security model
Slipway executes code on the machine it runs on — that is the point — so the design is containment:
- All file operations are jailed to the workspace; path traversal is rejected.
- Secrets are write-only through the AI (`list_env` returns names, never values).
- `delete_app` requires explicit confirmation; `export_app` defaults to private repos and gitignores secrets before staging.
- HTTP mode warns loudly unless `SLIPWAY_TOKEN` is set. Treat a tunneled Slipway like SSH access, because that's what it is.
Details and reporting: [SECURITY.md](SECURITY.md).
## Verified, not vibes
`npm run smoke` drives the built server over a **real MCP stdio session**: create → write → preview → fetch the page over HTTP → SQLite roundtrip → env → push keys → teardown. CI runs it on every push, on Linux and macOS, Node 22 and 24.
## Roadmap
- Postgres behind the same `query_database` tool
- Magic-link login (email-based) in the saas template
- More templates: Next.js, Expo, Astro
- A hosted multi-tenant mode so one Slipway can serve a team
- Windows support
Contributions welcome — see [CONTRIBUTING.md](CONTRIBUTING.md). Good first issues are listed there.
## License
[MIT](LICENSE). Slipway is an independent open-source project, not affiliated with Anthropic, OpenAI, or Cloudflare.
TDQS
Scored across 22 tools
Each tool targets a distinct operation: file management, app lifecycle, preview/deploy, env, database, email, push, and export. Even similar actions like start_preview and share_preview are clearly separated (dev preview vs. public tunnel). No overlap or ambiguity.
All tools use snake_case with a verb-first pattern (delete_file, list_apps, write_file, install_dependencies, push_send). Even compound names like push_generate_keys follow the same style. Naming is predictable and consistent.
22 tools is on the higher end but justifiable for a platform covering app scaffolding, files, previews, deployments, env, DB, email, push, and export. The set is comprehensive without being redundant; each tool serves a distinct purpose in the workflow.
The surface covers the full app lifecycle: create, read, update, delete, deploy, preview, log, env, database, and integrations. Minor gaps exist (e.g., no explicit file-append or update, no list of push subscriptions), but these are non-critical and agents can work around them.