# 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 16 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://dev.fline.sh/docs/for-ai.md first. The MCP server is at https://mcp.dev.fline.sh/mcp. ## Facts - [fline facts](https://dev.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://dev.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://dev.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://dev.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://dev.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://dev.fline.sh/docs/connect-claude-code.md): Connect Claude Code to fline with one line in your computer's Terminal app, then approve fline in your browser. The tested way to use fline. - [Connect Cursor](https://dev.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://dev.fline.sh/docs/connect-codex.md): Setup steps to connect Codex to fline with a few lines in a settings file and one line in Terminal. Not yet tested from start to finish. - [Connect VS Code](https://dev.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://dev.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. - [Passwords and keys your app uses](https://dev.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://dev.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://dev.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://dev.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://dev.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://dev.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. ## For AI coding apps helping someone put an app on fline - Interface: a remote MCP server at https://mcp.dev.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. - Claude Code is the one client tested end to end: `claude mcp add --transport http fline https://mcp.dev.fline.sh/mcp`, then `/mcp`, select fline and choose Authenticate. Adding `-s user` registers it for every project instead of the current folder only. Cursor, Codex, 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). - Upload: pack the project folder as a .tar.gz, leaving out .git, node_modules, build output and .env files. 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 passes PORT and routes whichever port the process opens, and an app that listens only on localhost is refused. Each build attempt stops at 15 minutes. - 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://dev.fline.sh/llms-full.txt): every docs page above, concatenated - [Home](https://dev.fline.sh/): the landing page - [Privacy](https://dev.fline.sh/privacy): what the website's waitlist form stores - [Terms](https://dev.fline.sh/terms): terms for the private beta