Initialize comfygure in a project directory with comfy init:

> cd dev/my-project
> comfy init

Initializing project configuration...
Project created on comfy server
Configuration saved locally in .comfy/config
comfy project successfully created

By default, the comfy command stores encrypted data in the server. To host your own comfy server, see the related documentation.

.comfy/ Folder

The initialization command creates:

  • A .comfy/config file containing all identification and credentials about the current project, in order to sync with the comfygure origin server
  • A new line on your .gitignore in order to avoid committing this file (if a .git folder is found in the current folder)

Here is how the comfygure config file looks like.

> cat .comfy/config

# Your project ID to identify your project, useful to debug
# Your credentials to access to the comfy origin server
# The comfy server URI
# The private key used to encrypt your configuration, never sent to the server
# The HMAC key used to sign and verify the integrity of your configuration, never sent to the server

The comfy server don’t have access to your private and HMAC keys, ever. Be sure to keep these informations safe and secure.

Warning: If you lose this file, you will no longer be able to retrieve your settings, and no one will be able to help you, not even the server administrators.

Managing Environments

By default, comfy creates one single environment, called development. You can choose a different name during initialization:

comfy init --env production

At any time, you can list environments, or create a new environment:

# list environments
> comfy env ls
# create a "production" environment
> comfy env add production
Environment successfully created
You can now set a configuration for this environment using comfy setall production
> comfy env ls

Adding A New Version Of Settings

When you initialize comfygure on an app, it starts with no settings.

> comfy get development

In order to add a new version of the settings, you have to use the setall command, with a file containing your settings.

> cat config.json
{ "login": "admin", "password": "S3cret!" }

> comfy setall development config.json
comfy configuration successfully saved

Or your can use the set command to add or update a single entry in your config:

> comfy set development version "0.1"
> comfy get development version

Retrieving Configuration

To retrieve a configuration, use comfy get:

> comfy get development
    "login": "admin",
    "password": "S3cret!"

Optionally, you can format the configuration as a YAML, or as environment variables:

> comfy get development --yml
login: admin
password: S3cret!

> comfy get development --envvars
export LOGIN='admin';
export PASSWORD='S3cret!';

You can then use the standard output to create a new file, or source your environment variables.

> comfy get development --yml > src/config/development.yml
> cat src/config/development.yml
login: admin
password: S3cret!

> comfy get development --envvars | source /dev/stdin
> echo $LOGIN

Collaborating With A Team

To retrieve the settings of an app, comfygure needs all the information from the .comfy/config file for that app.

If you want to give the ability to Bob, your co-worker, to fetch the settings usinf comfygure, just give him this file.

scp .comfy/config bob@bob-workstation:~/repository/.comfy/config

You and Bob will now be able to share the settings. If bob edits a setting, you and other team members can retrieve it immediately.


The .comfy/config file is convenient for tests and development, but not for real deployment.

To this end, if comfy doesn’t find .comfy/config from the current folder, it looks for the credentials in environment variables.

Instructions to retrieve your configurations from a remote server are available by running comfy project deploy.

> comfy project deploy
Here are the instructions to install comfy on an remote server:

    1. Install comfygure
    2. Export the following environment variable
    3. Retrieve your config in the format of your choice

    npm install -g comfygure
    comfy get production --json

The COMFY_CREDENTIALS environment variable is generated using your credentials in .comfy/config. It contains your comfy credentials in a JSON string encoded in base64, is is not encrypted. Do not share this token.

Alternatively, you can specify all environment variable one by one, if you need to fine tune your comfy CLI. Say, you have the following .comfy/config file:


You can specify the following environment variables to replace it:

# All of these are included in COMFY_CREDENTIALS
export COMFY_PROJECT_ID=1111111111-1111-1111-1111-1111111111111;
export COMFY_PRIVATE_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;
export COMFY_HMAC_KEY=yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy;

comfy get production

Set the environment variable(s) in your CI configuration, code builder, or any continuous delivery system to let them use your configurations.