> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fau.fpt.icu/llms.txt
> Use this file to discover all available pages before exploring further.

# Application Recipes

> Define your apps with YAML recipes that fp-appimage-updater uses to manage and update them.

A recipe is a YAML file that tells fp-appimage-updater everything it needs to know about one app: what it's called, how to find updates, and how to install it. You write one recipe per app, commit it to your dotfiles, and fp-appimage-updater handles the rest.

## Where recipes live

Place recipe files inside `~/.config/fp-appimage-updater/apps/`. Each file can be a flat `.yml` at the top level, or a subdirectory containing the recipe file and any supporting scripts.

```
~/.config/fp-appimage-updater/
├── config.yml
└── apps/
    ├── hydra-launcher.yml
    └── hayase/
        ├── hayase.yml
        └── resolver.sh
```

<Tip>
  Use a subdirectory when your app needs a custom `resolver.sh` script for the [script strategy](/configuration/update-strategies). Place the recipe and the script together in the subdirectory so the `script_path` stays a clean relative path like `./resolver.sh`.
</Tip>

## Fields

<ParamField path="name" type="string" required>
  Unique identifier for the app. Used as the filename base, symlink name, and display name in CLI output. Must be unique across all your recipes.
</ParamField>

<ParamField path="strategy" type="object" required>
  Defines how fp-appimage-updater finds and downloads updates. See [update strategies](/configuration/update-strategies) for the full reference and examples.
</ParamField>

<ParamField path="ignore" type="boolean">
  Skip this recipe in `check` and `update`, and show it as ignored in `list`. This is useful for keeping a recipe in your config without having fp-appimage-updater touch it.
</ParamField>

<ParamField path="integration" type="boolean">
  Override the global `manage_desktop_files` setting for this app. Set to `false` to skip `.desktop` file and icon extraction for apps that don't ship a proper AppImage desktop manifest.
</ParamField>

<ParamField path="create_symlink" type="boolean">
  Override the global `create_symlinks` setting for this app.
</ParamField>

<ParamField path="segmented_downloads" type="boolean">
  Override the global `segmented_downloads` setting for this app. Set to `false` for servers that don't support HTTP range requests.
</ParamField>

<ParamField path="respect_rate_limits" type="boolean">
  Override the global `respect_rate_limits` setting for this app. When set to `false`, fp-appimage-updater always attempts the request even if a prior rate limit window hasn't expired.
</ParamField>

<ParamField path="github_proxy" type="boolean">
  Override the global `github_proxy` setting for this app.
</ParamField>

<ParamField path="github_proxy_prefix" type="string | string[]">
  Override the global `github_proxy_prefix` setting for this app. Accepts a single URL string, a list of URLs, or `all`.
</ParamField>

<ParamField path="storage_dir" type="string">
  Override the global `storage_dir` for this app. The AppImage file is stored in this directory instead of the global default.
</ParamField>

<ParamField path="naming_format" type="string">
  Override the global `naming_format` for this app. Supported placeholders: `{name}` and `{version}`.
</ParamField>

<ParamField path="inner_asset_match" type="string">
  Optional pattern to find a specific AppImage inside a `.zip` archive. If omitted, the updater automatically finds files ending in `.AppImage` or containing ELF magic bytes.
</ParamField>

<ParamField path="zsync" type="boolean | string">
  Enable zsync delta updates for this app. Set to `true` to let fp-appimage-updater detect the zsync URL automatically, or provide a direct zsync URL string to use a specific endpoint.

  ```yaml theme={null}
  # Auto-detect zsync URL
  zsync: true

  # Explicit zsync URL
  zsync: "https://example.com/app.AppImage.zsync"
  ```

  Uses the built-in `zsync-rs` backend, so no separate system `zsync` package is required.
</ParamField>

## Examples

<CodeGroup>
  ```yaml hydra-launcher.yml theme={null}
  name: hydra-launcher
  strategy:
    strategy: forge
    repository: https://github.com/hydralauncher/hydra
    asset_match: "hydralauncher-*.AppImage"
  ```

  ```yaml whatpulse.yml theme={null}
  name: whatpulse
  ignore: true
  strategy:
    strategy: direct
    url: "https://releases.whatpulse.org/latest/linux/whatpulse-linux-latest_amd64.AppImage"
    check_method: etag
  segmented_downloads: true
  ```
</CodeGroup>

### Advanced Recipe

This example shows a recipe using multiple overrides to customize storage, naming, and download behavior:

```yaml curseforge.yml theme={null}
name: curseforge
storage_dir: ~/Games/AppImages
naming_format: "CurseForge-{version}.AppImage"
create_symlink: true
segmented_downloads: false
zsync: true
strategy:
  strategy: direct
  url: "https://curseforge.overwolf.com/downloads/curseforge-latest-linux.AppImage"
  check_method: last-modified
```

Generate a recipe scaffold for a new app with:

```bash theme={null}
fp-appimage-updater init --app <name> --strategy <forge|direct|script>
```

Use `--force` to overwrite an existing recipe file.
