fft-cli

module
v0.9.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 12, 2026 License: MIT

README ΒΆ

fft

A command-line client for the fulfillmenttools API. Sign in once, then reach every one of the API's 568 operations from your shell β€” not the ones someone got around to wrapping, all of them. stdout is data and nothing else, so a pipe is always safe.

Not an official fulfillmenttools product. This is an independent, open-source community project β€” not affiliated with, endorsed by, or supported by fulfillmenttools (OC fulfillment tools GmbH). For official support, contact fulfillmenttools, not this repository's issue tracker. Full disclaimer below.

πŸ“– Documentation β†’ joessst-dev.github.io/fft-cli β€” guides, the full CLI reference, and everything this page deliberately leaves out.

Install

Homebrew (macOS):

brew install Joessst-Dev/tap/fft

Scoop (Windows):

scoop bucket add joessst https://github.com/Joessst-Dev/scoop-bucket
scoop install joessst/fft

Go (any platform, needs Go 1.26+):

go install github.com/Joessst-Dev/fft-cli/cmd/fft@latest

Binary download β€” darwin/linux/windows Γ— amd64/arm64, from the releases page. Archives are checksummed, SBOM'd and signed with cosign; the install guide has the verification recipe.

Then:

fft version

Get started

You need a base URL, a Firebase Web API key, a username and a password from your fulfillmenttools onboarding β€” plus your project id and environment, which fft uses to build the synthetic login email. What each of those looks like, if they are not obvious.

fft project add prod     # answer the prompts
fft ping                 # is the tenant reachable?
fft facility list        # you're in

That is the whole setup. fft project add authenticates before it saves anything, so a typo in the password fails at setup rather than becoming a mystery an hour later. Add as many projects as you like and switch with fft project use, or run one command elsewhere with --project. Secrets go to your OS keychain, never to the config file.

Interactive mode

fft tui

A full-screen UI for browsing the operations, filling in a request, sending it and reading the response. Every action in it runs the same fft command you would type, with the same read-only gate and exit codes, and y copies that command. It draws on stderr and needs a terminal. See the interactive mode guide.

Try it without a tenant

fft emulator is a local, in-memory stand-in for the API β€” no account, no credentials, no network:

fft emulator                                    # one shell; prints the recipe on stderr
export FFT_BASE_URL=http://localhost:8080       # another shell
export FFT_FIREBASE_API_KEY=emulator
export FFT_EMAIL=dev@localhost
export FFT_ID_TOKEN=emulator-token

fft ping
fft facility create --example > facility.json
fft facility create --file facility.json
fft facility list                               # the facility you just created

Same shape as driving a real tenant, with the sign-in removed. State dies with the process. Seeding, the container image, eventing and the Testcontainers modules are in the emulator guide.

What else it does

Contributing

make build && make test && make lint

See CONTRIBUTING.md for the generated code, the docs site, and how a release is cut.

License

MIT Β© Joessst-Dev.

Disclaimer

This is an independent open-source project, built by the community, for the community. It is not affiliated with, endorsed by, or supported by fulfillmenttools (OC fulfillment tools GmbH). It is not an official client, and it comes with no warranty β€” see the licence.

"fulfillmenttools" and any related marks belong to their respective owner and are used here descriptively, to say what this tool connects to. The API surface is derived from the publicly published OpenAPI specification.

Bugs and feature requests for fft belong in this repository's issue tracker. Bugs in the fulfillmenttools API or platform belong with fulfillmenttools.

Directories ΒΆ

Path Synopsis
cmd
fft command
Command fft is a command-line client for the fulfillmenttools API.
Command fft is a command-line client for the fulfillmenttools API.
fft-emulator command
Command fft-emulator runs a local server that mimics the fulfillmenttools API.
Command fft-emulator runs a local server that mimics the fulfillmenttools API.
fft-emulator-pubsub command
Command fft-emulator-pubsub delivers fft emulator events to a local Google Cloud Pub/Sub emulator.
Command fft-emulator-pubsub delivers fft emulator events to a local Google Cloud Pub/Sub emulator.
fft-emulator-servicebus command
Command fft-emulator-servicebus delivers fft emulator events to a local Azure Service Bus emulator.
Command fft-emulator-servicebus delivers fft emulator events to a local Azure Service Bus emulator.
internal
api
Package api provides primitives to interact with the openapi HTTP API.
Package api provides primitives to interact with the openapi HTTP API.
atomicfile
Package atomicfile writes private files without ever leaving a half-written one behind.
Package atomicfile writes private files without ever leaving a half-written one behind.
auth
Package auth mints the bearer tokens fft sends to fulfillmenttools.
Package auth mints the bearer tokens fft sends to fulfillmenttools.
buildinfo
Package buildinfo carries version metadata stamped into the binary at link time.
Package buildinfo carries version metadata stamped into the binary at link time.
client
Package client is the fulfillmenttools API as the rest of fft sees it.
Package client is the fulfillmenttools API as the rest of fft sees it.
component
Package component is fft's extension point: a way for anyone to add a building block to the CLI without a pull request into this repository.
Package component is fft's extension point: a way for anyone to add a building block to the CLI without a pull request into this repository.
config
Package config holds fft's project model and its YAML persistence.
Package config holds fft's project model and its YAML persistence.
docsmd
Package docsmd holds the small Markdown transforms shared by the two documentation-site generators β€” tools/docsgen (guide pages from the skill assets) and fft gen-docs (the CLI reference).
Package docsmd holds the small Markdown transforms shared by the two documentation-site generators β€” tools/docsgen (guide pages from the skill assets) and fft gen-docs (the CLI reference).
exitcode
Package exitcode maps errors to fft's process exit codes.
Package exitcode maps errors to fft's process exit codes.
history
Package history is fft's local record of the requests it has sent.
Package history is fft's local record of the requests it has sent.
httplog
Package httplog logs HTTP traffic for --debug, with the secrets taken out.
Package httplog logs HTTP traffic for --debug, with the secrets taken out.
output
Package output renders command results.
Package output renders command results.
prompt
Package prompt asks the user questions on an interactive terminal.
Package prompt asks the user questions on an interactive terminal.
secrets
Package secrets stores the per-project credentials that must never land in the config file: passwords, refresh tokens and cached id tokens.
Package secrets stores the per-project credentials that must never land in the config file: passwords, refresh tokens and cached id tokens.
skill
Package skill ships fft's agent skill: the document an AI coding assistant reads before it drives fft on somebody's behalf.
Package skill ships fft's agent skill: the document an AI coding assistant reads before it drives fft on somebody's behalf.
template
Package template stores request bodies a user sends often, and the parameters that vary between sends.
Package template stores request bodies a user sends often, and the parameters that vary between sends.
testsupport
Package testsupport holds Ginkgo helpers shared by the suites of several packages.
Package testsupport holds Ginkgo helpers shared by the suites of several packages.
tui
Package tui is fft's interactive terminal UI.
Package tui is fft's interactive terminal UI.
update
Package update reports whether a newer fft release is available.
Package update reports whether a newer fft release is available.
pkg
transportproto
Package transportproto is the line protocol between the emulator and a transport component.
Package transportproto is the line protocol between the emulator and a transport component.
tools
docsgen command
Command docsgen renders the skill-derived guide pages of the documentation site, so those pages are never a second copy of the docs that can drift from the first.
Command docsgen renders the skill-derived guide pages of the documentation site, so those pages are never a second copy of the docs that can drift from the first.
specgen command
Command specgen turns the fulfillmenttools OpenAPI spec into opmeta.gen.go: the metadata table that lets fft reach every operation the typed client does not have.
Command specgen turns the fulfillmenttools OpenAPI spec into opmeta.gen.go: the metadata table that lets fft reach every operation the typed client does not have.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL