Dispatcher command.
fjall apps reads its subcommand from the first
positional argument. Run it bare and it lists applications.Overview
fjall apps is the application-level view of your organisation. It carries four subcommands:
The accepted surface is exactly those four names plus two aliases. Anything else exits with
Unknown subcommand and prints the four canonical names back to you.
Plural and singular are different commands
Three adjacent spellings exist. None of them is a typo of another.Prerequisites
Usage
describe, a path for detect. list and create take no positional.
Subcommands
ls and show are accepted but not advertised, so the unknown-subcommand error lists only the four canonical names:
apps list
Output:
unknown is not folded into not deployed. One is a definite state, the
other is an unreadable one. A summary line reading 1 unknown means the
health probe could not answer, not that the application is missing.fjall apps list renders in the interactive UI, prints the same rows and exits. It presents no menu and selects nothing. Pass --non-interactive for plain output.
apps describe
Application "api" not found. A credential or network failure reports its own message instead, so a blip is never presented as a missing application.
apps create
--name is required: without it the command fails with Application creation requires a name.
Its full option set is in Create options below.
apps detect
apps create asks for, so running it first removes the guesswork:
1
Detect
2
Read the recommendation, not the framework
Pass the recommended pattern to
--pattern. Framework names and pattern names are different vocabularies, and a framework name passed to --pattern is refused.3
Create
suggestedAppName for --name, and the create block’s source, buildCommand and outputDir for a static site.4
Deploy
fjall deploy.What detection reads
A workspace is classified from itspackage.json dependencies. A monorepo is expanded through its workspace globs, so every workspace gets its own row.
Monorepo tools recognised:
npm-workspaces, pnpm, lerna, turbo, nx.
A workspace with no framework and no Dockerfile is classified library, and Fjall will not scaffold infrastructure around it.
Human output
JSON output
{"ok": false, "error": { … }} and exits 1. In human mode the same failure prints Detection failed: … to stderr.
create.source is relative to the app’s fjall/<name> config directory, not
the repository root. The leading ../.. is part of the value. Pass it to
--source verbatim.Options
Command options
--mcp-protocol on any other subcommand emits an INVALID_SUBCOMMAND frame and exits 2. It never falls through to a human render, because a failure path that wrote to stdout would corrupt the frame stream.
Shared flags
Create options
Every flag below is registered onfjall apps but read only by apps create. This is the same block fjall create app registers, so the two commands stay in lockstep.
--pattern nextjs parses but is refused at creation: the Next.js pattern has
no CDK construct yet, so nothing is scaffolded and nothing is written. Use
--pattern payload for a Next.js-based application, or supply a static
export with --pattern staticsite.--tier and --type belong to different application modes and are
mutually exclusive. --tier carries the pattern tier for --pattern apps,
--type carries the tier for Dockerfile apps. Crossing them is refused with
an error naming the correct flag.Agent mode
All four subcommands have an agent surface.--agent renders TOON instead of tables, and --fields is validated against that subcommand’s schema before the authentication gate, so a typo fails fast rather than after a round trip.
Full reference: Agent mode.
Exit codes
Next Steps
fjall create
The guided application wizard, and the same flag block as
apps create.fjall list
List the resources declared inside one application’s infrastructure.ts.
fjall accounts
List provider accounts. The plural sibling that is not this command.
fjall deploy
Ship an application to AWS once it is created.