# fline > fline is hosting for apps people build with Claude Code on their own computer. Claude Code connects to fline, sends the project folder, and fline builds and runs it and gives it an HTTPS link. It can also create a database and put the app at a web address the person owns. Private beta: accounts are opened by hand and room is small. Last checked 17 October 2026. If this file and the facts page disagree, trust the facts page. fline is written for people who build with Claude Code but don't write code themselves. It is independent and isn't made by Anthropic. It is built by one person, Vladislav Razin. If you are an AI coding app helping someone put an app on fline, read https://fline.sh/docs/for-ai.md first. The MCP server is at https://mcp.fline.sh/mcp. ## Facts - [fline facts](https://fline.sh/facts.md): what fline is, which AI apps are tested, what works today, what doesn't yet, limits, privacy, cost and status, in plain words and dated - [fline facts as a web page](https://fline.sh/facts): the same content in HTML ## Docs Every docs page as Markdown. Each is also a web page at the same address without .md. - [Start here](https://fline.sh/docs.md): What fline does for the app you built with Claude Code, the three steps to put it online, and where to find help for each one. - [Getting your account](https://fline.sh/docs/get-access.md): How to get into the fline private beta: the waitlist, the email that says your account is open, and creating your account with the same address. - [Put your app online](https://fline.sh/docs/first-launch.md): The first launch, step by step: connect Claude Code, ask it to put your project online with fline, type any keys on a private page, and send the link. - [Connect Claude Code](https://fline.sh/docs/connect-claude-code.md): Connect Claude Code to fline with one line in Terminal, then approve fline in your browser. This also sets up the Claude desktop app's Code tab. - [Connect Cursor](https://fline.sh/docs/connect-cursor.md): Setup steps to connect Cursor to fline with a few lines in a settings file, then approve fline in your browser. Not yet tested from start to finish. - [Connect Codex](https://fline.sh/docs/connect-codex.md): Connect Codex to fline with a few lines in a settings file and one line in Terminal, then approve fline in your browser. Tested to a live app. - [Connect VS Code](https://fline.sh/docs/connect-vscode.md): Setup steps to connect VS Code's AI chat to fline with a few lines in a settings file, then approve fline in your browser. Not yet tested from start to finish. - [Other AI apps](https://fline.sh/docs/connect-other.md): Setup steps for Grok, Antigravity and other AI coding apps, and what the Claude desktop app, ChatGPT and app builders can and can't do with fline. - [Add fline's skills to your AI app](https://fline.sh/docs/skills.md): Give Claude Code, Codex or another AI coding app fline's own step-by-step instructions. For Claude Code, the same step also connects fline. - [Passwords and keys your app uses](https://fline.sh/docs/keys.md): Where your app's passwords and API keys go on fline: a private page you type them on, how to replace one, and what to do if a key gets out. - [A database of your own](https://fline.sh/docs/database.md): How Claude Code can have fline create a database for your app, what you get, who can reach it, and why you should keep your own copy. - [Use a web address you own](https://fline.sh/docs/web-address.md): Put your app at a web address you own, like www.yourbakery.com: the one record to add at your domain company, the padlock, and what to check. - [Change your app after it is online](https://fline.sh/docs/update-your-app.md): Update your app on fline by asking Claude Code again, what happens to the version people are using meanwhile, and how to put an earlier version back. - [When something goes wrong](https://fline.sh/docs/when-something-breaks.md): What to do when your app shows an error, Claude Code can't connect, a build fails, your web address doesn't work yet, or an email didn't arrive. - [Reference for AI coding apps](https://fline.sh/docs/for-ai.md): For AI coding apps putting a project on fline: the MCP server, OAuth scopes, call order, archive rules, fline.json, secrets, databases, domains and errors. ## Guides Answers to the questions people ask once an app works on their own computer, each ending in the early-access form. Each is also a web page at the same address without .md. - [Guides for putting your app online](https://fline.sh/guides.md): Plain answers for people who built an app with Claude Code or Codex: where to host it, what to ask, keys, databases, fixes. Free during the private beta. - [How to get your Claude Code app online and share it](https://fline.sh/guides/put-claude-code-app-online.md): How to get your Claude Code app online: why only you can open it now, the few steps that need you, and what to type. Free during the private beta, no card. - [Where should I host my app? An honest guide to which option fits](https://fline.sh/guides/which-option-fits-your-app.md): Where should you host an app you built with AI? When a builder, a free page host, a developer host or fline fits, and when not. Free during the private beta. - [Can Claude host my website? It depends where you made it](https://fline.sh/guides/can-claude-host-my-website.md): Can Claude host my website? What Claude chat, Claude Design, Claude Code and ChatGPT can put online, and where fline fits. Free during the private beta. - [My app only works on my computer. How can other people use it?](https://fline.sh/guides/app-only-works-on-my-computer.md): Why your app only works on your computer, stops when your laptop sleeps and fails on your phone, and how to put it online. Free during the private beta. - [Is it safe to give Claude Code your API keys?](https://fline.sh/guides/claude-code-api-keys.md): Is it safe to give Claude Code your API keys? What it can read, where keys belong, and what to do if one gets out. fline is free during the private beta. - [Do I need a database for my app? A plain answer](https://fline.sh/guides/database-for-your-app.md): Do you need a database for your app? A quick test, which kind to pick, what to ask Claude Code, and how fline sets one up. Free during the private beta. - [What to say to Claude Code to put your app online](https://fline.sh/guides/what-to-say-to-claude-code.md): Claude Code prompts to copy for putting your app online with fline: keys, a database, your web address, updates and fixes. Free during the private beta. - [How to put an app you built with Codex online](https://fline.sh/guides/put-codex-app-online.md): How to put your Codex app or website online: whether Codex can host it, the few steps with fline, and what to type. Free during the private beta. - [Works on your computer, broken online: what to tell Claude Code](https://fline.sh/guides/works-on-my-computer-broken-online.md): App works on your computer but blank or broken online? The usual causes in plain words, and what to tell Claude Code about each. Free during the private beta. - [Before people use your app: a checklist](https://fline.sh/guides/checklist-before-your-first-users.md): A security checklist before people use your app: keys, sign-in, who sees whose data, privacy, a copy, phones, going back, and what to ask Claude Code. - [Your API key leaked: what to do first](https://fline.sh/guides/api-key-leaked.md): API key leaked or pushed to GitHub? Make a new key, turn the old one off, put the new one on your host, then check your usage. The steps, in order. - [Why does my website say "Not secure"? The padlock in plain English](https://fline.sh/guides/site-says-not-secure.md): Why your website says "Not secure": the connection isn't private, not that you were hacked. Causes, and how to get the padlock. Free during the private beta. ## For AI coding apps helping someone put an app on fline - Interface: a remote MCP server at https://mcp.fline.sh/mcp over HTTP, with OAuth (PKCE with S256, dynamic client registration). Scopes: project:read, project:write, deploy, domain:write, and offline_access. - The person needs an approved fline account, opened by hand during the beta, and must have opened their dashboard at https://app.dev.fline.sh once. Until then every tool call is refused. - Tested end to end: Claude Code, the Claude desktop app's Code tab, and Codex. Claude Code: `claude mcp add --transport http --scope user fline https://mcp.fline.sh/mcp`, then `/mcp`, select fline and choose Authenticate. `--scope user` registers it for every project folder. The Code tab reads the same registration. Codex steps: https://fline.sh/docs/connect-codex.md. Cursor, VS Code, Grok and Antigravity have setup steps on the dashboard and are not tested end to end. - Once connected, read the server's instructions and its seven prompts: deploy_a_repository (first launch), update_a_live_app (changes and putting an earlier version back), add_a_database, use_a_web_address, diagnose_a_deployment (failure triage), freeze_the_build_plan (fline.json) and explain_to_the_person (plain words for the person). - Skills: the same procedures as Agent Skills, which an AI app loads by itself, and a Claude Code plugin that also connects the server: https://github.com/smartline-ai/fline-skills. Install steps: https://fline.sh/docs/skills.md. - Upload: pack the project folder as a .tar.gz, leaving out .git, node_modules, build output and .env files. Keep .env.example with empty or placeholder values: fline reads its variable names, and a small one with no key in it raises no warning. PUT it to the signed URL that create_project returns, then call complete_upload. At most 100 MiB compressed; the upload link lasts 15 minutes. There is no Git import, no zip and no inline upload. - Build: fline reads the source and writes its own build files. Don't write a Dockerfile for fline; a Dockerfile in the project is read as evidence only and is not the one that runs. There is no port setting: fline sets PORT=8080 (and HOST=0.0.0.0 on services it builds) and routes whichever port the process opens. Each build attempt stops at 15 minutes. - Runtime: a public service must answer GET / with any HTTP status within 5 minutes of starting, and one that listens only on localhost fails with "service listens on loopback only"; other services pass while they run. Services reach each other by name; an internal ref resolves to http://:8080. Files that must last go in a volume (volumes in fline.json, absolute path), kept until the project is deleted and counted in its 8 GiB. Built services run as user 10001, not root. Outgoing ports 25, 465, 587 and 2525 and private address ranges are blocked, so send email through a provider's HTTP API. - Services: a project can have several, including workers with no public address and prebuilt images from docker.io, ghcr.io or quay.io only. A prebuilt image's run_command replaces its CMD but not its ENTRYPOINT. All services share the project's 1 vCPU, 1 GiB of memory and 8 GiB of disk. There are no cron or scheduled jobs, and a project can't be stopped or paused, only deleted. - Secrets: declare variable names with declare_env_names, then give the person the link from get_secrets_link without opening it. The person types the values on a private page that works once, for 10 minutes. Don't ask the person to paste keys into the chat. set_env with secret=true stores a value you already hold: one you generated, or one the person already pasted into the chat, in which case suggest they replace it with a fresh key on the private page. No tool reads a stored secret back. A new secret reaches running containers after restart. - Databases: create_service makes a managed PostgreSQL 16 or Valkey 8 (Redis-compatible and TLS only, so use a rediss:// URL) in one small size: 1 GiB of memory and about 8 GiB of data. A data service belongs to the account and can serve several projects. It is reachable from the internet over TLS with its password, and the person can set an IP allowlist. No tool returns a connection string. A variable the plan marks managed (scope "managed", ref "postgres" or "valkey") is filled in by fline, which reuses or creates a database named -postgres or -valkey. A database made separately with create_service under another name is not wired: the person copies its string from the Services page. So don't create one for a project first; check list_services. An existing Postgres, MySQL, MongoDB, Redis or RabbitMQ can be declared with attach_external; the person types its URL. - Domains: attach_domain returns the record the person must add at their DNS provider; you can't add it for them. A www or other subdomain works at any provider with a CNAME. An apex domain is confirmed only on Cloudflare. The ownership record's name starts with _smartline-challenge, an older name; use it exactly as given. check_domain checks again, and fline keeps checking for 48 hours. After that a domain that still isn't proven is marked failed for good: remove it and add it again. Don't call check_domain on a failed domain; it answers an internal error. - Versions: rollback redeploys an earlier version as a new, higher version with the current secrets. It doesn't change database contents and is refused if the old version no longer validates. get_config returns fline.json; saving it at the archive root makes later deploys follow the same plan, though a model call still screens each upload. - Diagnosis: get_logs (stored build output, or a short runtime tail), get_events (state timeline), get_project_detail (container health and restarts). The dashboard searches 7 days of runtime output; the tools get only recent lines. Failed projects have a "Copy for your AI" button whose text the person may paste to you. - Capacity: if the platform is full, a new project fails at the submit stage after its build, with a no_capacity reason. Tell the person rather than retrying. - Model: to plan builds, fline sends parts of the source to OpenAI's GPT-5. Saved secrets never reach it. Keys written into source files can, apart from files named like key files and files matching four common key patterns, which are held back from the model. Those files still go into the build, so leave them out of the archive. ## Limits and status - One rented machine at Contabo. No failover, no uptime commitment, no backup or restore promise, no status page. - One person per account. No teams. - Free during the private beta. No billing exists. Usage is measured and shown, not charged. - Isolation is standard container isolation on a shared machine, with nothing heavier added. Some of our own services trust the network between them. Others will not talk to a caller that has not proved who it is. Where that proof is not asked for, those ports answer nothing from off the machine. ## Optional - [All docs in one file](https://fline.sh/llms-full.txt): every docs page above, concatenated - [Home](https://fline.sh/): the landing page - [Privacy](https://fline.sh/privacy): what the waitlist form and fline itself store, who else receives any of it, and for how long - [Terms](https://fline.sh/terms): terms for the private beta