Skip to main content

Prerequisites

Complete these first: fjall create app authenticates before it scaffolds anything. The only exception is --offline, which writes files without registering the application.

Overview

A Fjall application is an infrastructure stack with compute, storage, and networking resources. Pick a tier preset or build a custom stack.
That opens the interactive wizard. To script the same thing, use non-interactive mode.

Application tiers

The first prompt, “Choose your starting point?”, lists six tiers in this order with Standard pre-highlighted. Resilient requires a Pro plan and Enterprise requires an Enterprise plan. Standard, Lightweight and Tinkerer default to an RDS Instance. Resilient and Enterprise default to Aurora. Resilient keeps 30-day backup retention and 90-day flow logs. Enterprise keeps 35-day retention, ships flow logs to S3 for 365 days, and adds a read replica to the Instance variant.
The tier picker is a fixed list. It never filters on database type, and the database question comes later in the wizard.

Interactive flow

After the tier, the wizard prompts for the rest. A tiered application asks:
  1. Name your application? (for example, api)
  2. Use suggested container ‘<dir>’? (Y/n) only when a monorepo container directory is inferred and --container was not passed. Answering no asks Container directory (leave empty for repo-root scaffold):
  3. Include database?
  4. Restore database from an existing RDS snapshot? only when a database is included. Answering yes asks for Snapshot identifier (ARN or name): then Master username from the snapshot (immutable, must match original):
  5. How many services? (default 1, maximum 10, and Tinkerer accepts 1 only), then per service: Name service N of M?, What type of service is “X”? (asked only when the count is above 1), Provide Dockerfile for “X”?, Dockerfile path for “X”?, Container port for “X”? (skipped for workers and when an EXPOSE port is read from the Dockerfile), Does “X” need database connection? (asked only when the application includes a database)
  6. Which frontend should be the main website (catch-all)? only when two or more frontend services exist
  7. The review list, then Create application with these settings?
  8. Select a deployment target: shown only when your organisation config derives more than one target. A single target is selected automatically, and a run with no derivable target skips the prompt
A Custom application skips steps 3 to 6 and asks Network configuration? instead, offering Standard, Lightweight, Resilient, Tinkerer, and No network.
The wizard then runs the creation steps and prints a persistent summary after it exits:
A third step, ✓ Setting up git repository, appears when you pass --git or --github.

What gets created

Your application structure:
fjall-config.json is committed and records the project’s organisation binding plus any domains. The active deployment target lives in a gitignored sibling, .fjall/local.json, so a teammate’s choice never re-aims your deploy. The Dockerfile is written only for applications with ECS compute, and only when you have not supplied your own with --dockerfile. Static-site and pattern applications get none.

Infrastructure code

The generated infrastructure.ts for a Standard application with a database:

Non-interactive mode

Pass --non-interactive with the options below to skip the wizard. Options on their own do not skip it: on a terminal they pre-fill the wizard and it still prompts, which is how a CI job hangs.
-n, --name is required. --register-only and a non-TTY stdout also force the non-interactive path.

Application options

Three refusals to plan around:
  • --offline conflicts with --github, which needs a GitHub identity, and with --target, which is checked against your organisation.
  • --offline is refused for the paid tiers. Create offline with tinkerer, lightweight, standard, or custom.
  • --register-only conflicts with --dry-run, --offline, --git, --github, --services, --dockerfile, --container-port, --file-override, --owner, --network, --snapshot-identifier/--snapshot-username, and the static-site flags (--source, --build-command, --output-dir, --routing, --forms-to, --cors-origin).

Pattern options

Patterns are a separate scaffold path, driven by --pattern and valid only in non-interactive mode. The interactive wizard drops pattern flags and lands in the six-tier picker, so reach patterns interactively through bare fjall create, then Patterns. --tier is narrower than -t, --type: tinkerer and enterprise are not pattern tiers.
The nextjs pattern is not deployable. It is hidden from the picker, and --pattern nextjs is refused at create time. Use --pattern payload for a Next.js application, or --pattern staticsite for a pre-built static site.
Create an application on its own or as part of an organisation. For multi-account setups, deploy the organisation first. In agent mode the same flow is spelled fjall apps create.

Next Steps

Deploy Application

Deploy your application to AWS.

Add Resources

Extend with databases, storage, and more.

Connect AWS

Connect the AWS account your application deploys into.

Deploy Organisation

Set up multi-account management with Fjall.