Floom Docs
Everything you need to publish and run Python apps with Floom.
Quickstart
Install
Install the CLI globally:
npm i -g @floom/cliSign in
Opens a browser for Google OAuth. The token is saved locally.
floomit loginPublish your first app
Scaffold a starter in the current directory, then publish:
floomit init
floomit publishAfter publishing, Floom prints a URL like floom.run/apps/your-app/run. Share it with anyone.
floom.yaml reference
A complete annotated example with every supported field:
name: my-app
description: "One-line description of what this app does"
# Which action is selected by default in the UI
default_action: run
# Secrets your app needs (users set these via `floomit secret set`)
secrets:
- key: OPENAI_API_KEY
required: true
# Python runtime version
runtime: python3.12
actions:
run:
label: "Run" # Display name shown in the UI
entry: app.main # Python module:function
inputs:
- key: url
label: "Target URL"
type: url # url | text | number | boolean | email
# file | csv | json | markdown
required: true
example: "https://stripe.com"
- key: keywords
label: "Keywords"
type: text
default: ""
outputs:
- key: result
type: text
path: result # key in the dict your function returnsname — slug used in URLs and CLI commands. Lowercase, hyphens only.
description — one-line description shown in the app card and run page.
default_action — which action is pre-selected in the UI. If omitted, the first action is used.
secrets — keys your function reads from os.environ. Users set persistent values with floomit secret set, or provide them per-run in the UI.
runtime — Python version. python3.12 is the default and the only supported value in alpha.
actions — map of action key to action definition. Single-action apps can use a top-level inputs / outputs instead.
entry — Python module.function. The function receives a dict of inputs and must return a dict.
inputs[].type — one of text, url, email, number, boolean, file, csv, json, markdown. URL inputs prefill https:// in the UI.
CLI commands
All commands use the floomit binary.
| Command | Description |
|---|---|
| login | Sign in via browser (Google OAuth, PKCE) |
| logout | Clear local session |
| whoami | Show current account |
| apps | List your active apps |
| init | Scaffold a floom.yaml in the current directory |
| publish | Bundle and publish the app from the current directory |
| run [slug] | Trigger a manual run. Use slug:action for multi-action apps, --action <key>, -i key=value for inputs |
| run:status <runId> | Show the status of a run |
| logs <runId> | Stream logs for a run |
| secret set <slug> <key> | Set a persistent secret for an app (prompts for value if omitted) |
| secret list <slug> | List stored secret keys (values never shown) |
| secret remove <slug> <key> | Remove a stored secret |
| cron set <slug> <cron-expr> | Schedule a cron trigger. Use slug:action for multi-action apps. Must be at least hourly. |
| cron show <slug> | Show the current cron schedule for an app |
| cron remove <slug> | Remove the cron trigger for an app |
Limits
Current alpha limits — will be raised as infrastructure scales.
| Limit | Value |
|---|---|
| Runs per day (per user) | 50 |
| Minimum cron interval | 1 hour |
| Bundle size | 50 MB |
| Input file size | 25 MB |
| Log size per run | 5 MB |
Data model
floomit secret set are encrypted with AES-256-GCM at rest. They are never returned by the API and never appear in logs. They are only injected into the sandbox environment at run time.