TL;DR
Muse can now build an app and run it on floo. You chat with Muse; floo runs the app.
- Ask Muse to read getfloo.com/agents.md and set you up on floo, then say what to build.
- Muse asks for your floo API key once, through a connector, and keeps it in its secret store.
- floo runs the app with sign-in, a Postgres database, and an API Muse uses to keep it up to date.
What happens in the video?
The video is 68 seconds with no sound. Here is what it shows, in order.
- The ask. A coffee roaster types one message to Muse: "read https://getfloo.com/agents.md and set me up on floo. Then build me a tool to keep track of our coffee inventory. Call it Roastery Inventory. I'll look at it in the browser. You'll update it and answer questions for me through its API." Below that they paste this week's count: eight coffees, each with bags on hand and bags sold per week, from Ethiopia Guji (52 on hand, 28 sold a week) to Decaf Colombia (9 on hand, 10 sold a week).
- Muse reads floo's docs and asks for a key. Muse reads agents.md, notes that floo takes one API key sent as a bearer token to
https://api.getfloo.com, and tells the roaster where to get one: the welcome page after signing up, or API keys in floo settings. It shows a connector card for floo. The roaster clicks Connect, pastes the key into the Add custom connector dialog, and clicks Add. Muse says the key goes straight to secure storage and it never sees the value. - Muse builds it, floo runs it. Muse's status moves through building, installing dependencies, preparing the deployment, and verifying the deploy. It replies with the app's link and a summary: the dashboard shows bags on hand, bags sold per week, weeks of stock left, and a status badge for each coffee. Checked against the live database, Decaf Colombia is urgent at about 0.9 weeks of stock and Ethiopia Guji is low at about 1.9 weeks.
- The app is behind sign-in. The roaster opens Roastery Inventory in the browser and signs in. The table lists all eight coffees with Urgent, Low, and OK badges.
- Muse drives the app through its API. Muse says it will keep the data current through the app's own API:
GET /api/inventoryto read,POST /api/inventoryto add or replace a row, andPATCH /api/inventoryto update one. It also deleted the temporary key it used to verify the app, so nothing extra is left behind. - You just chat. The roaster writes "We shipped 40 bags of the Ethiopia. What are we about to run out of?" Muse updates Ethiopia Guji from 52 to 12 bags and answers: Ethiopia Guji is now urgent at about 0.4 weeks, Decaf Colombia is urgent at about 0.9 weeks, and everything else has 2.2 weeks or more. The dashboard moves Ethiopia Guji to the top with an Urgent badge.
How does Muse work with floo?
Muse never runs the floo CLI. Everything goes over floo's HTTP API, which agents.md describes in one page and https://api.getfloo.com/openapi.json describes in full.
| Step | What Muse does | What floo does |
|---|---|---|
| Read the instructions | Fetches https://getfloo.com/agents.md | Serves the current setup steps, so Muse never follows stale ones |
| Authenticate | Sends the floo API key from its secret store as Authorization: Bearer | Checks the key on every call |
| Create the app | Calls POST /v1/projects with a name | Creates the app and a floo-hosted git repository, and starts deploying a Next.js starter with invite-only sign-in and Postgres |
| Write the code | Mints a short-lived git password with POST /v1/projects/{app_id}/git-token, clones, edits, and pushes | Deploys every push to the default branch |
| Wait for the deploy | Polls GET /v1/apps/{app_id}/deploys for its commit until the status is live | Builds and runs the app; on failure returns the error, suggested fixes, and build logs |
| Use the app | Calls the app's own API with an app key | Issues the app key and checks it before a request reaches the app |
Three things follow from that design:
- No GitHub account. floo hosts the repository, so a person who only talks to Muse never has to create one.
- No secrets in the chat. The floo key lives in Muse's secret store. floo provisions the database and injects its credentials into the app, so nobody pastes them into the conversation.
- People and agents share one app. People sign in through the browser. Muse works through the API. Both see the same data.
What can Muse build on floo?
Small apps that hold one job's data and answer questions about it: the coffee inventory in the video, a list of which customers are waiting on a quote, the weekly numbers your team checks every Monday. Each app gets a web frontend and backend at one URL, sign-in for the people you invite, a Postgres database, scheduled jobs if it needs them, and an API that Muse can call.
The step-by-step setup is in How do I build and host an app from Muse?
Why an API key instead of the floo CLI?
Muse runs in a sandbox, and the floo CLI did not fit it: the binary could not update itself there, and its login wrote a token to a config file. The connector talks to floo's HTTP API with a key from Muse's secret store instead. Why we moved floo's Muse integration to an API has the details.
Getting started
Sign up at getfloo.com, then ask Muse to read getfloo.com/agents.md and set you up on floo.
Frequently asked questions
Can Muse deploy an app?
Yes, with floo. Ask Muse to read getfloo.com/agents.md and set you up on floo, connect your floo API key when it asks, and Muse builds the app while floo hosts it with sign-in, a database, and an API.
How does Muse talk to floo?
Over floo's HTTP API at api.getfloo.com, with your floo API key as a bearer token. Muse reads the setup steps from getfloo.com/agents.md; the full reference is api.getfloo.com/openapi.json. Muse does not install or run the floo CLI.
Do I need a GitHub account to use floo from Muse?
No. floo can host the app's repository, so Muse creates the app and pushes code to floo directly.
Does Muse see my floo API key?
Muse asks for the key through its connector dialog, which stores it in Muse's secret store. You can revoke or replace the key under API keys in floo settings.
