floom
Documentation

Floom Docs

Everything you need to publish and run Python apps with Floom.

Quickstart

Install

Install the CLI globally:

bash
npm i -g @floom/cli

Sign in

Opens a browser for Google OAuth. The token is saved locally.

bash
floomit login

Publish your first app

Scaffold a starter in the current directory, then publish:

bash
floomit init
floomit publish

After 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:

yaml
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 returns

name — 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.

CommandDescription
loginSign in via browser (Google OAuth, PKCE)
logoutClear local session
whoamiShow current account
appsList your active apps
initScaffold a floom.yaml in the current directory
publishBundle 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.

LimitValue
Runs per day (per user)50
Minimum cron interval1 hour
Bundle size50 MB
Input file size25 MB
Log size per run5 MB

Data model

Owner-only visibility. Every run is owned by you. Other users cannot see your runs. Run inputs, outputs, and logs are private to your account.
Retention. Run inputs and outputs are persisted in your Floom account for 30 days, then deleted by the retention job. Logs are stored as text, capped at 5 MB per run, retained for 30 days.
Persistent secrets. App secrets set via 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.
No model training. We process your run data only to execute runs. We do not train models on your data.