Skip to main content
floo init creates config files in your project. These files are the source of truth for how your app deploys.

floo.service.toml (single-service app)

For a project with one service (most apps), floo init creates a single floo.service.toml in your project root.
[app]
name = "my-app"

[service]
name = "web"
port = 3000
type = "web"          # web | api | worker
ingress = "public"    # public | internal
env_file = ".env"     # optional — synced on deploy
FieldDescription
[app] nameYour app’s unique name on floo
[service] nameService identifier (e.g., web, api, worker)
[service] typeweb (HTTP), api (HTTP), or worker (no ingress)
[service] portPort your app listens on
[service] ingresspublic (internet-facing) or internal (private)
[service] env_filePath to .env file, synced as env vars on deploy

floo.app.toml (monorepo / multi-service)

For projects with multiple services, floo init creates a floo.app.toml at the repo root and a floo.service.toml inside each service directory.
[app]
name = "my-app"

[services.api]
path = "./api"

[services.web]
path = "./web"
Each service directory then has its own floo.service.toml with the service-specific config (port, type, ingress). You can also inline service config directly in floo.app.toml:
[app]
name = "my-app"

[services.api]
path = "./api"
type = "api"
port = 8080

[services.web]
path = "./web"
type = "web"
port = 3000

How floo finds config

When you run floo deploy, the CLI walks up the directory tree (max 20 levels) looking for config files. If both floo.app.toml and floo.service.toml exist in the same directory, floo.app.toml takes precedence.

Example: single-service app

my-app/
├── floo.service.toml
├── package.json
└── src/
    └── index.ts
# floo.service.toml
[app]
name = "my-app"

[service]
name = "web"
port = 3000
type = "web"
ingress = "public"

Example: monorepo with 2 services

my-app/
├── floo.app.toml
├── api/
│   ├── floo.service.toml
│   ├── requirements.txt
│   └── main.py
└── web/
    ├── floo.service.toml
    ├── package.json
    └── src/
        └── App.tsx
# floo.app.toml (repo root)
[app]
name = "my-app"

[services.api]
path = "./api"

[services.web]
path = "./web"
# api/floo.service.toml
[service]
name = "api"
port = 8000
type = "api"
ingress = "public"
# web/floo.service.toml
[service]
name = "web"
port = 3000
type = "web"
ingress = "public"
See the floo init CLI reference for all flags and auto-detection details.