Open source · Self-hosted · MIT

Remote vibe coding on mobile

Cretli is a self-hosted PWA for remote coding with AI agents — terminal and chat on your phone, talking to your own PC.

Seven agent harnesses — OpenCode, OpenRouter, Cursor SDK, CodeBuddy, DeepSeek, Qwen Code, Codex. Security notes

Harnesses

Works with your harness

Seven pluggable harnesses on one WebSocket protocol — equal citizens, no lock-in. Terminal, files and git need no harness at all.

🤖

OpenCode

Drives a local opencode serve — the CLI ships via the optional opencode-ai npm package; authenticate with Zen or Z.AI.

opencode serveZen / Z.AI auth
🌐

OpenRouter

Bring your OpenRouter key for Claude, GPT, or open models — backed by server-side workspace tools.

bring your keyworkspace tools

Cursor SDK

Optional @cursor/sdk with your Cursor API key. Subject to Cursor's terms of service.

optionalCursor ToS
🤝

CodeBuddy

Optional Tencent agent SDK (@tencent-ai/agent-sdk) plus the CodeBuddy CLI and its own API key.

optionalCLI + SDK
🐳

DeepSeek Harness

Optional DeepSeek Harness — the @deepseek-ai/dsh CLI plus the @deepseek-ai/dsh-sdk-client SDK, with your DeepSeek API key.

optionaldsh
🔮

Qwen Code

Optional @qwen-code/sdk with a Qwen Cloud API key — pay-as-you-go, Token Plan, or Coding Plan.

optionalQwen Cloud
🧠

Codex

Optional @openai/codex-sdk with the bundled Codex CLI — sign in with ChatGPT or set an API key.

optionalChatGPT sign-in

Settings → Harness shows which backends are installed and ready. Just here for the terminal? Shell, files, and git work with zero API keys.

Features

Your PC, in your pocket

One small PWA between you and a full development machine — no cloud lock-in, no vendor middleman.

Full shell, files & git

A real terminal session as your user, with file browsing and git — streamed to your phone. Works with no API key at all.

~ $ git status On branch main — all clean ✓ ~ $ npm test 42 passed (3.1s)

Seven harnesses, zero lock-in

OpenRouter is built in — bring a key and go. OpenCode, Cursor SDK, CodeBuddy, DeepSeek, Qwen Code, and Codex plug in as optional packages. Switch anytime.

📲

PWA first

Install to your home screen and it behaves like an app. Nothing to compile, no app store.

🔑

Works without keys

Terminal, files, and git need no API key. Bring a key only when you want cloud models.

Your infra, your rules

Runs on your own PC with Node 22.13+ or Docker. Shell, files, and git stay on your machine; cloud-model chats are opt-in with your own key.

🤝

Vibe coding, anywhere

Describe the change from the train, the sofa, or the office kitchen — an agent executes it on your machine and reports back, while you watch the terminal live.

MIT license Node 22.13+ Docker ready localhost by default

Screenshots

See it running

Real screenshots from the current build — the PWA on a phone, and the same agent chat embedded as a widget.

Cretli on a phone — agent chat with terminal, tasks, files and git
On your phoneThe full PWA — chat, terminal, tasks, files, git — in the same live session as your PC.
Cretli widget embedded on a web page
As a widgetThe same agent chat embedded on any page, with page context.

Live session

One session, every screen

Open the same server on a second phone, a tablet, or a laptop — every screen watches the same terminal and chat update in real time.

  • Broadcast to every client — one terminal PTY per session, and its output plus the agent chat stream to every device connected at once.
  • Join in one scan — the app shows a link and QR code pointing at your LAN URL, so a second screen pairs without typing addresses.
  • You own the address — Settings stores the LAN host (CRETLI_LAN_HOST) that the link and QR point to, so it always matches your network.
  • No cloud account — screens talk to your server over LAN or VPN, never through a vendor middleman.

Go beyond localhost the way you trust — read Security first.

Voice

Talk it out — hands-free vibe coding

Voice mode is a continuous conversation with your agent, not a voice keyboard.

  • Talk continuously — OpenAI Realtime or Gemini Live (the cheapest long conversations), with semantic VAD and noise reduction.
  • Your voice steers the app — the agent runs tools as you speak: send prompts, stop the agent, switch chats, run tasks.
  • Dictate or listen — push-to-talk dictation and read-aloud replies for when you'd rather not talk out loud.
  • Guardrails built in — live cost estimate, warning at $2, hard cap at $5, session ends after 90 s of silence.

Microphone access needs HTTPS — npm run gen-cert issues a certificate for your LAN IP (answer the prompt), then open the site on your phone.

Widget

Drop Cretli into any page

Embed the same agent chat on your docs, dashboard, or project page — page context included, any harness.

  • One script tag — the widget pairs with your server using an installation ID; no build step.
  • Page context, on your terms — the agent sees only what you grant: DOM, console, network, screenshots, even interact and navigate.
  • Same chat, any harness — the widget talks to the same backends as the app: OpenCode, Codex, Qwen Code, and the rest.
context dom console network screenshot interact navigate storage

Embed snippet

<script
  src="https://your-pc:3011/dist/app/embed-widget.bundle.js"
  data-installation-id="YOUR-ID"></script>

Create the installation in Cretli Settings, paste the snippet, done.

Quick start

Up and running in minutes

Pick npm or Docker — both run the same self-hosted server. From a phone, reach it over your own LAN, VPN, or tunnel (steps in INSTALL.md).

npm

git clone https://github.com/cretli/cretli.git
cd cretli
npm install
npm run build:front:prod
npm start

Docker publishes localhost:3011

export CRETLI_SETUP_TOKEN="$(openssl rand -hex 16)"
docker compose up --build

The setup token authorizes first access. Compose publishes a host-only port, so open it from your phone over LAN, VPN, or a tunnel — see INSTALL.md.

Termux

Your phone can be the server

No PC at hand? Run the whole server inside Termux on an Android phone and code from that very device — or let a tablet or laptop on Wi-Fi join the session.

  • Full server on Android — the same npm install plus npm run start:termux; no desktop, no Docker needed.
  • Code on the phone itself — open https://127.0.0.1:3011 in the phone's browser; the first run sets your access password.
  • Or broadcast over Wi-Finpm run start:termux:lan binds the phone's LAN IP so a tablet or laptop can join the same live session.
  • Stays awakestart:termux holds a CPU wake-lock when Termux:API is installed, so Android doesn't freeze the server in the background.
  • Android reality — chat works well with an OpenRouter key in Settings; heavy local agents and the Cursor SDK usually aren't available on Termux.

Full walkthrough, update steps, and LAN certificate details: docs/INSTALL.md

Termux on Android

pkg install git nodejs python make clang pkg-config openssl
git clone https://github.com/cretli/cretli.git
cd cretli
npm install
npm rebuild node-pty
npm run build:front:prod
npm run start:termux

Then open https://127.0.0.1:3011 in the phone's browser (Chrome or Firefox) and accept the self-signed certificate.

Security

Read this before anything else

⚠ Cretli exposes a full shell as your user

The default bind is localhost. Do not put it on the public internet. If you need remote access, keep it behind a VPN or a tunnel you control.

Full details: SECURITY.md

FAQ

Questions people ask

Is Cretli affiliated with Cursor or Anysphere?

No. Cursor SDK is just one of seven equal harnesses (OpenCode, OpenRouter, CodeBuddy, DeepSeek, Qwen Code, and Codex are the others). Using it is optional, and Cursor's terms of service apply to that backend.

Do I need an API key?

Not for terminal, files, or git. A key is only needed for cloud model backends (OpenRouter, Cursor SDK, CodeBuddy, DeepSeek, Qwen Code, Codex). OpenCode also supports Zen / Z.AI auth.

What do I need to run it?

Your own PC with Node 22.13+ (or Docker), and a phone with a modern browser. Cretli installs as a PWA — no app store involved.

How does my phone reach my PC?

Cretli runs a small server on your machine. By default it binds to localhost, so expose it the way you trust — LAN, VPN, or a private tunnel. Pairing uses a one-time setup token.

Can several devices use it at once?

Yes — multiple devices can share the same session live. Terminal output and chat are broadcast to every connected client, and the app shows a link and QR pointing at your LAN URL so a second screen joins in one scan. More in Live session.

Do I need a PC, or can a phone host it?

Cretli usually runs on your PC (Node 22.13+ or Docker), but the server itself runs fine inside Termux on an Android phone — npm run start:termux, then open the phone's own browser. See Termux for the full steps.

Is it production-ready?

Cretli is early and evolving fast (currently v0.2.0). It exposes a full shell as your user, so treat it as a dev tool for your own machines — keep the localhost default and read SECURITY.md before exposing it anywhere.

Is it really open source?

Yes — MIT licensed, developed in the open at github.com/cretli/cretli. Read the code before you run it; that's the point.

Take your dev machine with you

Self-hosted, open source, and yours. Clone it, run it, vibe from anywhere.