What does the Fine Structure plugin add to Claude Code?
Fine Structure (finestructure.ai) is a full-stack application platform. It provides hosting, a managed database whose tables are called entities, authentication, custom domains with automatic TLS, secrets storage, saved-version rollback, and AI agents. The Claude Code integration is an open source plugin for Claude Code, MIT licensed, published at https://github.com/finestructure-ai/claude-plugin.
Installing it does two things. It adds a short set of slash commands to your session, and it registers an MCP connector pointed at https://finestructure.ai/api/mcp. The connector is what exposes the platform to Claude: around 69 tools covering app creation, file editing, data modelling, publishing, and reading back errors and traffic.
- /deploy deploys the current project and returns a live URL.
- /fs-status reports app status, links, and runtime errors.
- /fs-domain <domain> connects a custom domain, with a DNS walkthrough and automatic TLS.
How do you install the Claude Code deploy plugin?
Installation happens inside a Claude Code session, not in a shell. Run these two commands in order at the Claude Code prompt. The first registers the marketplace that hosts the plugin, the second installs the plugin from it.
Once the install finishes, the slash commands and the MCP connector are live in the session. There is no API key to paste, no config file to add to your repository, and no build step to wire up.
- /plugin marketplace add finestructure-ai/claude-plugin
- /plugin install finestructure@finestructure
How does authorization work, and where do the API keys go?
There are no API keys in this flow. The first time Claude calls a Fine Structure tool, your browser opens a Fine Structure OAuth consent screen. You sign in (a free tier exists and no card is required), read what the connector is asking for, and click Authorize. The session picks up the granted access from there and continues.
Because the grant is an OAuth consent rather than a copied token, no secret value passes through your shell history or your repository. One point of accuracy while you are at the consent screen: this is an open source plugin for Claude Code, not an official or verified Anthropic listing, and directory submissions are still in review. The source is public, so reading the repository is the practical way to confirm what the connector does.
How do you deploy from Claude Code with the /deploy command?
There are two deploy modes, and which one runs depends on what is in front of the plugin.
The first mode starts from an idea rather than a codebase. You describe the app in the session, Claude calls create_app with that description, and the platform generates the initial application. Running /deploy then publishes it and returns the URL. The second mode starts from a project already on disk, which is covered in the next section because it behaves differently.
A first deploy of a new idea looks like this.
- Open Claude Code in the directory you want to work from.
- Describe the app you want in plain language, or point Claude at the existing project.
- Run /deploy.
- Approve the OAuth consent screen if this is your first use of the connector.
- Open the returned URL. The app is served at <name>.finestructure.ai until you connect a custom domain.
How do you publish an existing local project from Claude Code?
An existing project is ported file by file into the platform's React runtime. Claude reads your source and recreates it in the runtime layout: screens under pages/, shared interface code under components/. Imports, routing conventions, and data access are rewritten to fit the platform rather than copied verbatim. It is a port, not a blind file upload.
That distinction sets the right expectation. The result is a working app in the platform's shape, not a byte-identical mirror of your repository, so review the ported files the way you would review a pull request. Every file write creates a saved version, which means a rewrite that went the wrong way can be rolled back rather than unpicked by hand.
A sensible order of work: port one page and the data it reads, deploy that slice, confirm the runtime behaves the way you expect, then move the rest across.
Check status, runtime errors, and traffic after the first deploy
/fs-status is the quickest read on a deployed app. It returns current status, the app's links, and runtime errors from the live app, which is usually enough to tell a build problem apart from something failing in the browser.
Claude has finer-grained tools over the same ground. get_errors pulls runtime errors so a fix can be made and shipped in the same session. get_app_analytics returns views, unique visitors, top pages, referrers, and device breakdown. publish_app pushes the current state live when you want to control the moment of release instead of publishing on every edit.
How do you connect a custom domain with automatic TLS?
Until a domain is attached, the app answers at <name>.finestructure.ai. To move it to your own address, run /fs-domain app.example.com in the session.
The command walks through the DNS records to add at your registrar, then checks for them to resolve. TLS certificates are issued and renewed automatically once the domain verifies, so there is no certificate file to install and no renewal to schedule. DNS propagation is the slow part of this step and it sits outside the platform's control, so allow time for it before concluding that something failed.
What else does the connector let Claude do?
Deployment is one slice of the toolset. The rest matters once the app has real users and real data.
- Entities: define database schemas and work with records directly from the session.
- Saved versions: every file edit is versioned, so rollback is a routine operation rather than an emergency.
- Secrets: keep credentials the app needs at runtime out of the source you are editing.
- Access policies: gate pages behind login so only authenticated users can reach them.
- Analytics: views, unique visitors, top pages, referrers, and devices.
- Agents: AI agents that run as part of the app instead of as an external script you have to host.
When should you not use this for Claude Code hosting?
This path fits app-shaped work: a React front end, data in entities, users behind authentication, deployed and revised from the session. Three cases fit it poorly, and it is cheaper to notice that before the port than after.
There is also a workflow question that has nothing to do with features. If your team treats git as the source of truth, with review gates and CI that must pass before anything ships, then a platform where the assistant edits deployed files directly needs an agreed convention about what gets carried back into the repository. Settle that before the first deploy, not after.
- You need a specific server runtime. If the service has to run Go, Rust, a pinned Python version, or a long-lived worker process, a React runtime is the wrong target.
- You have a monorepo with a substantial backend. Porting a front end is tractable; a repository whose value sits in backend services, shared internal packages, and its own build pipeline will fight the port instead of benefiting from it.
- You only need static file hosting. For a static site with no database, no auth, and no server logic, a Vercel or Netlify style host is simpler and easier to reason about.
Questions people actually ask
- Is the Fine Structure Claude Code plugin official?
- No. It is an open source plugin for Claude Code, MIT licensed, published at github.com/finestructure-ai/claude-plugin. Directory submissions are in review, so it should not be described as official, verified, or listed in the Anthropic directory.
- Do I need a credit card to deploy from Claude Code?
- No. Fine Structure has a free tier, and the OAuth consent screen that opens on first use does not ask for card details. You sign in or create the account there and click Authorize, then the deploy continues in the session.
- What does the /deploy command in Claude Code actually do?
- It deploys the current project and returns a live URL. For a new idea it works with create_app, which generates the application from your description first. For an existing local project the files are ported into the platform's React runtime and then published.
- Can I deploy an existing React project from Claude Code?
- Yes, with the caveat that it is a port rather than an upload. Claude recreates your screens and shared components in the platform layout (pages/ and components/) and adapts imports and data access to match the runtime. Review the ported files before you publish, the same as any generated code.
- How do I point my own domain at an app deployed from Claude Code?
- Run /fs-domain yourdomain.com in the session. The command gives you the DNS records to add at your registrar, checks verification, and provisions TLS automatically. Until the domain verifies, the app stays reachable at <name>.finestructure.ai.