Skip to main content
Akron uses .akr files to share structured setup data. An .akr file is a ZIP archive containing exactly one manifest and one payload. This structure ensures imports remain explicit and prevents unrelated files from being included in a pack.

Archive Shape

An archive must contain exactly two entries: The reader rejects archives containing folders, extra entries, rooted paths, backslashes, or .. path segments, as well as those that do not match the expected payload name and kind.

Manifest

The manifest.json file uses the following structure:
The manifest size limit is 16 KiB.

Setup Payload

Setup packs use the setup archive contract:
The setup.json payload uses the following structure:
The setup payload size limit is 2 MiB.

Setup Sections

Scoped imports merge only the selected section into the current active settings without resetting unrelated settings.

Import Safety Rules

Imports follow a “fail closed” policy: Akron rejects archives with unsupported formats or versions, incorrect kinds, missing or extra entries, oversized payloads, invalid JSON, or unsupported payload formats. If an import fails, current settings remain unchanged and a short toast notification is shown. Detailed errors are written to the logs rather than the user-facing toast.

Maintenance Requirements

Settings included in .akr setup packs must meet these requirements:
  • Must be defined as a field in AkronSetupState.
  • Must support capture from AkronModuleSettings.
  • Must support application back to AkronModuleSettings.
  • Must implement scoped-section copy behavior when the setting belongs to StartPos, AutoKill, AutoDeafen, Recorder, Audio, or Hud.
  • Must have automated tests proving whole import/export and scoped import/export preserve the intended state.
Avoid adding compatibility shims for old local packs unless explicitly required. Akron maintains a single canonical contract to ensure clear import errors. New archive kinds are reserved for payloads that are not setup/setup sections. New archive kinds require:
  • A unique Kind, payload entry name, payload format string, and payload size limit.
  • Dedicated single-payload archive helper methods.
  • Simple payload entry names (e.g., labels.json).
  • Unsupported payload-format rejection before state is applied.
  • Comprehensive test coverage for round-trip, wrong kind, extra entries, oversized payload, and missing manifest.
  • Complete technical documentation updated on this page.
Do not include multiple unrelated payloads in a single .akr archive. The current contract requires exactly one kind, one manifest, and one payload. Archive tests live in tests/archive-tests.cs.