CLI
Every @fluxta/cli command and its flags.
npm install -g @fluxta/cliThe CLI creates plugin and iconset projects, checks them, and talks to a running Fluxta.
Two things it deliberately does not do:
- It never builds. Building belongs to the project —
pnpm buildandpnpm dev. There is nofluxta build,dev, orrun. Commands that need build output use what is already there. - It never launches Fluxta. Anything that touches the app needs it already running.
Run fluxta help or fluxta help <command> for the same information in your
terminal.
Starting a project
fluxta create
Scaffolds a new plugin — or iconset — project into a new directory named after it. A plugin also gets its dependencies installed.
fluxta create
# What do you want to create? Plugin / Iconset
# Name:
# Author (Jane Doe):
# Description:
# Categories:
# Platforms:Run in a terminal, it prompts for the plugin's name and Package Metadata
(author defaults to git config user.name, editable). Categories and
platforms are checkboxes: pick one to three categories, and at least one
platform. Of the platforms, only the system you are running on starts ticked —
the one you can certainly test. An iconset is asked for neither. Run
non-interactively — CI, a script, no attached terminal — the matching flags are
required instead:
fluxta create --name my-plugin --author "Jane Doe" --description "..." \
--categories streaming,audio --platforms windows,macos
fluxta create --type iconset --name my-icons --author "Jane Doe" --description "..."| Flag | Description |
|---|---|
--type | plugin or iconset. Defaults to plugin when run without a prompt. |
--name | The package's name. Lowercase and URL-safe, e.g. my-plugin. |
--author | Package Metadata author (defaults to git config user.name). |
--description | Package Metadata description. |
--categories | A plugin's categories, comma-separated: one to three categories. |
--platforms | A plugin's platforms, comma-separated: any of windows, macos, linux. |
--categories and --platforms are the exception to "required": without them,
the manifest gets an empty list and fluxta publish reports it. When given,
they are checked by the same rules publishing applies. An iconset refuses both.
It validates the name before writing anything, refuses a directory that is not
empty, initializes a git repository, and — for a plugin — runs pnpm install.
If the install fails, the generated files stay put so it can be retried. An
iconset has no dependencies, so nothing is installed.
repository and maintainers are not asked for here — fluxta publish fills
them in from the package's own git remote and the GitHub account you
authenticate as.
See Your first plugin for what it generates.
Checking your work
fluxta validate
Checks the project and its build output against everything publishing requires,
including the metadata fields and any leftover TODO placeholders.
pnpm build
fluxta validate| Flag | Description |
|---|---|
--json | Print a stable machine-readable result instead of human-readable output. |
--warnings-as-errors | Exit with code 1 when there are warnings, not only errors. |
--previous-index | Path to an index of already-published versions, to check you are not reusing one. |
It does not build. Run pnpm build first, or the check runs against stale
output. This is the command for your own CI: it talks to nothing and needs no
credentials.
In an iconset, it checks the manifest, the licence file, and every icon — see Iconsets for the rules.
fluxta package
Builds a distributable zip from existing build output, after running the same
full validation as validate.
pnpm build
fluxta package --out my-plugin-1.0.0.zip| Flag | Description |
|---|---|
-o, --out | Required. Where to write the zip. |
--force | Overwrite the output file if it already exists. |
--warnings-as-errors | Exit with code 1 when there are warnings. |
--previous-index | As above. |
The archive is deterministic and contains a single top-level folder named after the plugin — the shape a user can drop straight into their plugins directory. An iconset is zipped straight from its folder, since it has no build.
fluxta publish
Validates everything, then opens a pull request adding the plugin to the public plugin repository. Merging that pull request is what publishes it.
pnpm build
fluxta publish| Flag | Description |
|---|---|
--base | Target a branch other than the repository's default. |
--warnings-as-errors | Exit with code 1 when there are warnings. |
--previous-index | As above. |
The first run authenticates with GitHub through a browser prompt; later runs reuse it. It does not build, and it does not release anything by itself — see Publishing.
An iconset is published the same way and lands in the repository's iconsets/
folder instead of plugins/. Plugins and iconsets share one set of names, so a
name another package already has is refused before anything is pushed.
Talking to a running Fluxta
All of these need Fluxta open. They address a plugin by its id, defaulting to the
name in the manifest of the current directory. An iconset has no process, so
start, stop, and restart refuse one.
fluxta link
Points Fluxta at build output, so the app runs local code instead of an installed copy of the same plugin.
pnpm build
fluxta link
fluxta link --status # what is linked right now, without changing it| Argument / flag | Description |
|---|---|
[BUILT-FOLDER] | An explicit build folder path. |
[PACKAGE] | A package id, or a build folder path whose manifest supplies the id. |
--source | The project directory, if it is not the current one. |
--status | Show what is linked, without changing anything. |
--json | Print the status as JSON. |
It validates the folder before registering it, and it does not build.
fluxta unlink
Removes the link, stops the linked plugin, and restores the installed copy if there is one. If there is not, it says so.
fluxta unlink| Argument / flag | Description |
|---|---|
[PACKAGE] | Package id. Defaults to the manifest name in the current directory. |
--json | Print the result as JSON. |
fluxta restart
Refreshes the link from current build output and restarts the plugin. This is what the dev loop calls after every successful build; it is rarely typed by hand.
fluxta restart
fluxta restart my-plugin| Argument / flag | Description |
|---|---|
[PLUGIN] | Plugin id. Defaults to the manifest name in the current directory. |
--timeout | Seconds to wait for the plugin to come back up. Default 10. |
fluxta start
Starts a stopped plugin's process without touching its link.
fluxta start my-plugin| Argument / flag | Description |
|---|---|
[PLUGIN] | Plugin id. Defaults to the manifest name in the current directory. |
--timeout | Seconds to wait for the plugin to start. Default 10. |
fluxta stop
Stops a running plugin's process without touching its link.
fluxta stop my-plugin| Argument / flag | Description |
|---|---|
[PLUGIN] | Plugin id. Defaults to the manifest name in the current directory. |
--timeout | Seconds to wait for the plugin to stop. Default 10. |
Exit codes
0 on success, 1 on failure. With --warnings-as-errors, warnings count as
failure too — which is what automation usually wants, and usually not what you
want while writing the plugin.