Skip to content

floomhq/deploy-action

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 

Repository files navigation

Deploy on floom

floom

Deploy a Python app to floom from any GitHub Actions workflow. One @app.action becomes a live URL, REST API, web UI, and MCP tool — in 45 seconds.

Usage

- uses: floomhq/deploy-action@v1
  with:
    api-key: ${{ secrets.FLOOM_API_KEY }}

Inputs

Input Required Default Description
api-key Yes Floom API key. Store as a repository secret.
name No repo name App name on floom.
path No . Path to the directory containing main.py.
url No https://api.floom.dev Floom API URL. Override for self-hosted.
network No false Enable outbound HTTP from the sandbox.

Outputs

Output Description
app-url Live run page URL
project-id Project ID
share-url Public share link

Examples

Deploy on every push to main

name: Deploy

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: floomhq/deploy-action@v1
        id: deploy
        with:
          api-key: ${{ secrets.FLOOM_API_KEY }}
          name: my-app

      - run: echo "Live at ${{ steps.deploy.outputs.app-url }}"

Deploy a subdirectory with network access

- uses: floomhq/deploy-action@v1
  with:
    api-key: ${{ secrets.FLOOM_API_KEY }}
    path: ./backend
    name: my-api
    network: true

Deploy to self-hosted floom

- uses: floomhq/deploy-action@v1
  with:
    api-key: ${{ secrets.FLOOM_API_KEY }}
    url: https://api.your-floom.com
    name: my-app

Use the output URL in a comment

- uses: floomhq/deploy-action@v1
  id: deploy
  with:
    api-key: ${{ secrets.FLOOM_API_KEY }}

- uses: actions/github-script@v7
  with:
    script: |
      github.rest.issues.createComment({
        issue_number: context.issue.number,
        owner: context.repo.owner,
        repo: context.repo.repo,
        body: `Deployed: ${{ steps.deploy.outputs.app-url }}`
      })

Writing a floom app

A floom app is a single main.py file:

from floom import app, remember

@app.action
def run(text: str, top_n: int = 5) -> dict:
    count = (remember("runs") or 0) + 1
    remember("runs", count)
    return {"result": text[:top_n], "total_runs": count}
  • @app.action on every function you want exposed
  • Type hints become form fields and API parameters
  • Return a dict — rendered automatically (lists become tables, images become previews)
  • remember(key, value) / remember(key) for persistent state

Full guide: BUILDING.md

Getting an API key

Sign up at floom.dev or run floom self-hosted:

docker run -p 3000:3000 -p 3001:3001 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /tmp/floom-workspaces:/tmp/floom-workspaces \
  -v /tmp/floom-storage:/tmp/floom-storage \
  ghcr.io/floomhq/floom

License

MIT

About

Deploy to floom from GitHub Actions

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors