floop
floop is an agent skill and CLI for uploading local project versions to floop-server and reading server comments.
floop gives agents a small, repeatable workflow:
Select server -> Create/select project -> Create/select version -> Upload files -> Read comments -> Resolve comments
It does not build files, validate artifact internals, generate UI, or decide which files belong in a version. Other tools or users create the files. floop stores local project/version state, uploads version directories, caches server comments, and updates comment status.
Quick Start for Agents
Use this flow when a user asks to publish with floop:
- Confirm which floop server to use.
- SaaS:
https://floop-server.vercel.app - Custom/self-hosted: ask for the full server URL, for example
http://localhost:3000
- SaaS:
- After the server URL is known, tell the user where to create an API key:
<server-url>/dashboard-> top-right user menu ->API Keys. - Initialize floop with the server URL and key:
floop init --server-url <server-url> --api-key <key>
- Create or select a local project:
floop projects create <project>
floop projects use <project>
- Create or select a version:
floop versions create <version> --project <project> --artifact-type <type> --entrypoint index.html
floop versions use <version> --project <project>
- Put uploadable files in
.floop/<project>/<version>/. - Upload:
floop review upload --project <project> --version <version> --json-output
- Give the user
previewUrl. The CLI upload API does not require or return ashareUrl; users can open the preview UI and clickShare. - Read comments when requested:
floop comments --project <project> --version <version> --version-id <server-version-id> --json-output
- Resolve only comments that were addressed by a newer uploaded version:
floop resolve <comment-id> --project <project> --version-id <server-version-id> --status resolved
Agent rules:
- Do not invent API keys or search unrelated files for secrets.
- Do not leave commands waiting for hidden API key input.
- Do not treat missing
shareUrlas an upload failure. - Do not modify artifact files unless the user asked for that work.
Install
pip install floop
floop --version
Enable the Agent Skill
Install the floop skill into the agent platform used by the current project:
floop enable copilot
floop enable cursor
floop enable claude
floop enable trae
floop enable qwen-code
floop enable opencode
floop enable openclaw
floop enable codex
floop enable pi
floop enable agent
The installed skill is named floop.
Quick Start for Humans
cd your-project
# Initialize workspace and server settings.
floop init --server-url http://localhost:3000 --api-key <key>
# Create/select local state.
floop projects create my-review
floop projects use my-review
floop versions create v1 --project my-review --artifact-type custom --entrypoint index.html
floop versions use v1 --project my-review
# Put uploadable files in .floop/my-review/v1/, then upload.
floop review upload --project my-review --version v1 --json-output
# Read server comments.
floop comments --project my-review --version v1 --version-id <server-version-id> --json-output
Server Setup
floop init accepts server settings:
floop init --server-url <server-url> --api-key <key>
If the API key is not available yet:
- Open
<server-url>/dashboard. - Use the top-right user menu.
- Choose
API Keys. - Create a key.
- Rerun
floop init --server-url <server-url> --api-key <key>.
You can also set FLOOP_API_KEY in the environment or in .floop/floop.env.
Upload Contract
The upload API succeeds when it returns previewUrl.
{
"uploaded": true,
"previewUrl": "https://...",
"shareUrl": null
}
shareUrl is not part of the CLI upload contract. Open the preview UI and use
the Share button when a share link is needed.
Workspace Layout
.floop/
├─ floop.env # Server URL + API key only
├─ projects.csv # Local projects, server bindings, selected project/version
└─ <projectid>/
└─ <version>/
├─ floop.version.json
├─ floop.upload.json
├─ floop.comments.json
└─ ...uploadable files...
.floop/floop.env contains secrets. floop does not create or edit
.floop/.gitignore; ignore policy belongs to the host repository.
Legacy workspaces under .floop/projects/<project>/versions/<version>/ are
readable for compatibility. floop does not move or delete legacy files
automatically.
Commands
Workspace
floop init --server-url <server-url> --api-key <key>
floop preview
Projects
floop projects
floop projects create <project>
floop projects use <project>
Versions
floop versions --project <project>
floop versions create <version> --project <project> --artifact-type <type> --entrypoint index.html
floop versions use <version> --project <project>
When a project and version are selected, commands that support defaults can use the selected values.
Server
floop review set --project <project> --server-url <server-url> --api-key <key>
floop review upload --project <project> --version <version> --json-output
floop comments --project <project> --version <local-version> --version-id <server-version-id> --json-output
floop resolve <comment-id> --project <project> --version-id <server-version-id> --status resolved
Responsibility Boundary
| floop owns | Other tools or users own |
|---|---|
.floop/ workspace |
Source files |
projects.csv project/version selection |
File generation |
| Server project binding | File validation |
| Version upload | Build systems |
| Server comments cache | Artifact internals |
| Comment status updates | Content changes |
Supported Agents
| Agent | Command |
|---|---|
| GitHub Copilot | floop enable copilot |
| Cursor | floop enable cursor |
| Claude Code | floop enable claude |
| Trae IDE | floop enable trae |
| Qwen Code | floop enable qwen-code |
| OpenCode | floop enable opencode |
| OpenClaw | floop enable openclaw |
| Codex | floop enable codex |
| Pi | floop enable pi |
| Agent Skills-compatible agent | floop enable agent |
Development
Run the full test gate:
PYTHONPATH=src python3 -m pytest --cov=floop --cov-report=term-missing --cov-fail-under=100
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file floop-2.0.2.tar.gz.
File metadata
- Download URL: floop-2.0.2.tar.gz
- Upload date:
- Size: 40.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
564d5ad8475de44061a650c12a100636ef7de09485c696e2b1e5f5fb71e898ea
|
|
| MD5 |
cd03d95b55b52959828c0a29434004a5
|
|
| BLAKE2b-256 |
8e09dc521ef3be43555ef4b16b42b3ee4713d4e68d75c8d90edf19bb831128d1
|
Provenance
The following attestation bundles were made for floop-2.0.2.tar.gz:
Publisher:
release.yml on lijma/floop-client
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
floop-2.0.2.tar.gz -
Subject digest:
564d5ad8475de44061a650c12a100636ef7de09485c696e2b1e5f5fb71e898ea - Sigstore transparency entry: 2624692190
- Sigstore integration time:
-
Permalink:
lijma/floop-client@cb87097223696a2aad93a34b8c1813cb18291af6 -
Branch / Tag:
refs/tags/v2.0.2 - Owner: https://github.com/lijma
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@cb87097223696a2aad93a34b8c1813cb18291af6 -
Trigger Event:
push
-
Statement type:
File details
Details for the file floop-2.0.2-py3-none-any.whl.
File metadata
- Download URL: floop-2.0.2-py3-none-any.whl
- Upload date:
- Size: 25.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8abfab8fdfbef68bd85b78b0ea03e615f0c98913b227986cccff1cb83cf6598a
|
|
| MD5 |
eb62794b61bd9566866fef1201c3c8c4
|
|
| BLAKE2b-256 |
ec8dcf761f0d9a78e4acbe2cd1107d0501304e25e126adc3ec5f4414d748afbb
|
Provenance
The following attestation bundles were made for floop-2.0.2-py3-none-any.whl:
Publisher:
release.yml on lijma/floop-client
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
floop-2.0.2-py3-none-any.whl -
Subject digest:
8abfab8fdfbef68bd85b78b0ea03e615f0c98913b227986cccff1cb83cf6598a - Sigstore transparency entry: 2624692212
- Sigstore integration time:
-
Permalink:
lijma/floop-client@cb87097223696a2aad93a34b8c1813cb18291af6 -
Branch / Tag:
refs/tags/v2.0.2 - Owner: https://github.com/lijma
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@cb87097223696a2aad93a34b8c1813cb18291af6 -
Trigger Event:
push
-
Statement type: