Quickstart
Deploy a sample app to Keelson and check that only signed-in users can open it.
- Time: about 15 minutes, including the build.
- What you need: a Keelson account and a terminal for running commands. The sample does not need API keys for any external services.
- What success looks like: you see a greeting after signing in, while a private browser window where you are not signed in shows the login page.
This guide uses Claude Code, Codex, or Cursor to deploy the app. You can also deploy directly with the CLI: skip step 3 and run the CLI command in step 4.
If you do not have a Keelson account, create one in the Keelson console.
1. Install the CLI and sign in
Section titled “1. Install the CLI and sign in”The Keelson CLI lets you sign in and deploy from your terminal. Select your operating system and run the install command.
curl -fsSL https://keelson.dev/install.sh | shIf the keelson command is not found
The installer does not change PATH, the list of places your terminal looks for commands. Add this line to ~/.zshrc or ~/.bashrc, then reopen your terminal:
export PATH="$HOME/.keelson/bin:$PATH"Run this in Windows PowerShell 5.1 or later, included with Windows 10, Windows 11, and Windows Server 2016 or later.
irm https://keelson.dev/install.ps1 | iexAfter installation, make keelson available in your current PowerShell session:
$env:Path = "$env:USERPROFILE\.keelson\bin;$env:Path"Make the command available in future PowerShell sessions
The installer does not change PATH. Open Edit environment variables for your account, add %USERPROFILE%\.keelson\bin to your user Path, then reopen PowerShell.
Next, run the login command. Your browser opens so you can sign in with your Keelson account.
keelson login2. Download the sample app
Section titled “2. Download the sample app”- Download the sample app (ZIP).
- Extract the ZIP file.
- Open the extracted
keelson-hellofolder in Claude Code, Codex, or Cursor. If you are not using an AI agent, open a terminal in that folder.
See the sample code
from html import escape
from fastapi import FastAPI, Requestfrom fastapi.responses import HTMLResponse
app = FastAPI()
@app.get("/", response_class=HTMLResponse)def index(request: Request): email = escape(request.headers.get("X-Keelson-User-Email") or "Guest") return f""" <!doctype html> <html lang="en"><body style="font-family: sans-serif; padding: 2rem"> <h1>Hello, {email}</h1> <p>This app is running on Keelson.</p> </body></html> """fastapiuvicornslug: helloruntime: python-slimcommand: "uvicorn main:app --host 0.0.0.0 --port $PORT"db: mode: noneThe app reads the signed-in user’s email address from a header supplied by Keelson and displays it. It contains no authentication code.
3. Install the Agent Skill
Section titled “3. Install the Agent Skill”The Agent Skill gives your AI agent Keelson configuration and deployment instructions. It comes with the Keelson CLI. Open a terminal in the extracted keelson-hello folder, select your agent, and run the command.
keelson install-agent claude-code --globalWith --global, the skill is available in your other projects too. Without it, the skill is installed only in the current project.
keelson install-agent codexInstalls the skill in the current project.
keelson install-agent cursorInstalls the skill in the current project.
Install the Skill from the public repository
Choose exactly one installation method: keelson install-agent, the Claude Code plugin, or npx skills add. Combining methods can create two copies of the same Skill or cause one installation to overwrite the other.
In Claude Code, add the marketplace and install the plugin:
/plugin marketplace add keelsonhq/skills/plugin install keelson@keelson-skillsFor other agents, use:
npx skills add keelsonhq/skillsThese methods install only the Skill. You still need to install the CLI and sign in as described in step 1. A Skill installed as a Claude Code plugin is not updated by keelson login; it follows Claude Code plugin updates instead.
See CLI commands for installation locations and how to update the skill.
4. Ask the agent to deploy
Section titled “4. Ask the agent to deploy”Send this request in your agent’s chat:
Deploy this app to Keelson.
The agent starts the deployment. The first deployment takes a few minutes. When it starts, you receive a deployment ID and an app URL in this format:
https://<workspace>--hello.keelson.runIf you are not using an AI agent, run this in the keelson-hello folder:
keelson deploy --newThe URL is issued before deployment finishes, so the app may still be building or starting when it appears. Before opening the URL, check the status. Replace <deploy-id> with the ID shown when deployment started.
keelson status <deploy-id>For example, for ID d1, run keelson status d1. A result of status: completed means the deployment process has finished. Continue to step 5 to check that you can actually open the app.
Statuses such as queued, building_image, or starting mean the deployment is still in progress. Wait a little and run the same command again. failed or rolled_back means it did not succeed: check the reason and suggested next action. See Troubleshooting for help.
5. Check the app and login protection
Section titled “5. Check the app and login protection”- Open the app URL in your browser. Sign in to Keelson if prompted. Check that the page shows “Hello, …” and the text below it.
- Open the same URL in a private or incognito window where you are not signed in to Keelson. You should see the Keelson login page instead of the app.
Seeing “Guest” does not mean you are signed out. The sample displays “Guest” when your login method does not provide an email address to the app.
You now have an app at its own URL that only signed-in users can open. It also appears in the Keelson console.
Next steps
Section titled “Next steps”- Share with a colleague — invite them and check that they can open the app using their own account. See Share an app with your team.
- Change the page and deploy again — edit the text in
main.pyand ask the agent to deploy again. See Update and restore for applying changes and returning to an earlier version. - Deploy your own app — check Supported apps and constraints, then prepare with Bring an existing app.
- Understand how it works — read Core concepts for workspaces, permissions, and the responsibilities of Keelson and your app.