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.
--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}/suffixA 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:/tmpFirst 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.