Summary
Add the ability to import a configuration.yaml file through the GUI, so users can get set up without needing to manually navigate to the hidden .filemoverexpress directory.
Background
File Mover Express uses two separate configuration files:
- AWS credentials — stored in
~/.aws/credentials or ~/.aws/config, generated by running aws configure. This is what authenticates the user with AWS.
- FME configuration (
~/.filemoverexpress/configuration.yaml) — File Mover Express's own config file, containing transfer profiles, S3 bucket settings, hot folder config, and daemon settings.
This issue is about making it easier to set up the FME configuration file (#2). It does not remove the requirement for AWS credentials — users still need the AWS CLI installed and configured unless the OAuth/OIDC feature is also implemented (see related issue).
Today, setting up the FME configuration requires a user to either:
- Manually navigate to a hidden directory (
~/.filemoverexpress/ on macOS/Linux, C:\Users\username\.filemoverexpress\ on Windows) and place or edit a configuration.yaml file there, or
- Use the GUI's transfer profile editor to configure everything from scratch
For less technical users — particularly freelancers being onboarded by a studio or production company — neither option is great. The ideal workflow is: the studio pre-configures a configuration.yaml with the correct S3 bucket, region, and transfer profile settings, sends it to the freelancer, and the freelancer imports it with one click.
Relationship to AWS CLI requirement
This feature reduces setup friction for the FME configuration, but users will still need AWS credentials configured on their machine (via the AWS CLI or another credential source) unless the OAuth/OIDC feature is also implemented. Full elimination of the AWS CLI requirement is tracked separately.
Proposed feature
Add an Import Configuration option to the GUI that:
- Opens a file picker so the user can select a
configuration.yaml from anywhere on their machine
- Validates the file before applying it
- Copies it into the correct config directory (
~/.filemoverexpress/ or platform equivalent)
- Reloads the running configuration without requiring a daemon restart (if possible)
What already exists
GetConfiguration and SetConfiguration gRPC endpoints already exist in src/cli/service/ — the GUI can already read and write configuration over the existing service layer
GetConfigDir() in src/cli/config/fs.go returns the correct platform-specific config directory
- The GUI already has a
transfer-profile-editor-modal and setup-wizard-modal — the import option would fit naturally alongside these
config.WatchConfig in src/cli/config/config.go already watches for config file changes and reloads — an import that writes to the config file may trigger this automatically
Implementation notes
CLI/daemon side:
A new ImportConfiguration gRPC endpoint (or reuse of SetConfiguration) would accept the contents of a YAML file, validate it against the existing config schema, write it to the config directory, and trigger a reload. Alternatively, the GUI could write the file directly via the filesystem if running locally (Electron), and rely on WatchConfig to pick up the change.
GUI side:
An "Import Configuration" button in the preferences or setup wizard modal. On click, open a native file picker filtered to .yaml / .yml files. Parse and send the contents to the daemon, or write directly to disk in the Electron context.
Validation:
The imported file should be validated before being applied — at minimum checking that required fields are present and the YAML is well-formed. A clear error message should be shown if the file is invalid, rather than silently overwriting a working config.
Merge vs replace:
Consider whether import should replace the entire config or merge transfer profiles into an existing config. Merging is safer for users who already have a working setup and are adding a new profile sent by a studio.
Relevant files
src/cli/config/fs.go — GetConfigDir(), config file path resolution
src/cli/config/config.go — WatchConfig, LoadConfiguration, ValidateAndUpdateConfiguration
src/cli/service/get-configuration.go and set-configuration.go — existing read/write endpoints
src/gui/src/app/components/modals/transfer-profile-editor-modal/ — natural home for an import button
src/gui/src/app/components/modals/setup-wizard-modal/ — alternative entry point for first-time setup
Acceptance criteria
- Users can import a
configuration.yaml via a file picker in the GUI
- The imported config is validated before being applied
- A clear success or error message is shown after import
- The running daemon picks up the new configuration without requiring a manual restart
- Existing configuration is not silently overwritten without user confirmation if one already exists
- Works on macOS, Windows, and Linux
Summary
Add the ability to import a
configuration.yamlfile through the GUI, so users can get set up without needing to manually navigate to the hidden.filemoverexpressdirectory.Background
File Mover Express uses two separate configuration files:
~/.aws/credentialsor~/.aws/config, generated by runningaws configure. This is what authenticates the user with AWS.~/.filemoverexpress/configuration.yaml) — File Mover Express's own config file, containing transfer profiles, S3 bucket settings, hot folder config, and daemon settings.This issue is about making it easier to set up the FME configuration file (#2). It does not remove the requirement for AWS credentials — users still need the AWS CLI installed and configured unless the OAuth/OIDC feature is also implemented (see related issue).
Today, setting up the FME configuration requires a user to either:
~/.filemoverexpress/on macOS/Linux,C:\Users\username\.filemoverexpress\on Windows) and place or edit aconfiguration.yamlfile there, orFor less technical users — particularly freelancers being onboarded by a studio or production company — neither option is great. The ideal workflow is: the studio pre-configures a
configuration.yamlwith the correct S3 bucket, region, and transfer profile settings, sends it to the freelancer, and the freelancer imports it with one click.Relationship to AWS CLI requirement
This feature reduces setup friction for the FME configuration, but users will still need AWS credentials configured on their machine (via the AWS CLI or another credential source) unless the OAuth/OIDC feature is also implemented. Full elimination of the AWS CLI requirement is tracked separately.
Proposed feature
Add an Import Configuration option to the GUI that:
configuration.yamlfrom anywhere on their machine~/.filemoverexpress/or platform equivalent)What already exists
GetConfigurationandSetConfigurationgRPC endpoints already exist insrc/cli/service/— the GUI can already read and write configuration over the existing service layerGetConfigDir()insrc/cli/config/fs.goreturns the correct platform-specific config directorytransfer-profile-editor-modalandsetup-wizard-modal— the import option would fit naturally alongside theseconfig.WatchConfiginsrc/cli/config/config.goalready watches for config file changes and reloads — an import that writes to the config file may trigger this automaticallyImplementation notes
CLI/daemon side:
A new
ImportConfigurationgRPC endpoint (or reuse ofSetConfiguration) would accept the contents of a YAML file, validate it against the existing config schema, write it to the config directory, and trigger a reload. Alternatively, the GUI could write the file directly via the filesystem if running locally (Electron), and rely onWatchConfigto pick up the change.GUI side:
An "Import Configuration" button in the preferences or setup wizard modal. On click, open a native file picker filtered to
.yaml/.ymlfiles. Parse and send the contents to the daemon, or write directly to disk in the Electron context.Validation:
The imported file should be validated before being applied — at minimum checking that required fields are present and the YAML is well-formed. A clear error message should be shown if the file is invalid, rather than silently overwriting a working config.
Merge vs replace:
Consider whether import should replace the entire config or merge transfer profiles into an existing config. Merging is safer for users who already have a working setup and are adding a new profile sent by a studio.
Relevant files
src/cli/config/fs.go—GetConfigDir(), config file path resolutionsrc/cli/config/config.go—WatchConfig,LoadConfiguration,ValidateAndUpdateConfigurationsrc/cli/service/get-configuration.goandset-configuration.go— existing read/write endpointssrc/gui/src/app/components/modals/transfer-profile-editor-modal/— natural home for an import buttonsrc/gui/src/app/components/modals/setup-wizard-modal/— alternative entry point for first-time setupAcceptance criteria
configuration.yamlvia a file picker in the GUI