Skip to content
Configuration

Configuration

fj-act reads persistent flags from a .fjactrc file so you don’t have to retype them every run — the same idea as a .curlrc or .npmrc.

Discovery order

Three locations are checked, in this fixed order, and all three are read (not just the first one found):

$XDG_CONFIG_HOME/fj-act/fjactrc

Resolved via adrg/xdg, so it follows the XDG base directory spec cross-platform (falls back to $HOME/.fjactrc if that lookup itself fails).

$HOME/.fjactrc

./.fjactrc

The invocation directory — typically your repo root, and the one you’re most likely to actually commit alongside your workflows.

Their contents are concatenated in that order, then your real command-line flags are appended last. Since flag parsing applies later Set() calls over earlier ones, this gives you a clear precedence: XDG < $HOME < invocation-dir .fjactrc < actual CLI flags for any single-value flag (--instance, --actions-url, …). Repeatable flags (--secret, --env, --platform, …) instead accumulate across every source — a -P line in your XDG config and another on the command line both apply.

There’s no override that clears a repeatable flag set earlier — if you don’t want an XDG-level --platform override applied to one specific invocation, you currently have to edit or move the file.

Syntax

One flag per line, exactly as you’d type it on the command line. Each line is expanded with os.ExpandEnv before parsing, so $VAR/${VAR} references pull from your calling shell’s environment, not the workflow’s.

# .fjactrc
--container-architecture=linux/amd64
--action-offline-mode
# a line whose value expands from the calling shell
--artifact-server-path $FAKEPWD/.artifacts
--env FOO=prefix/${FOO}/suffix

A flag’s value can itself contain further --looking tokens — only the first run of whitespace splits the line, so the rest stays one argument:

--container-options --volume /foo:/bar --volume /baz:/qux --volume /tmp:/tmp

First run: the image-size survey

If none of the three files exist yet and you haven’t passed -P/--platform explicitly, fj-act asks you once, interactively, which image size to default to (Large/Medium/Micro), then writes the resulting -P codeberg-tiny=.../-P codeberg-small=.../-P codeberg-medium=... lines to your XDG config file so every future run skips the prompt. See Runners & Platforms for what those labels actually map to and how to override them yourself.