Skip to content

ReforgeHQ/cli

Repository files navigation

Reforge CLI

Usage

$ npm install -g @reforge-com/cli
$ reforge COMMAND
running command...
$ reforge (--version)
@reforge-com/cli/0.0.14 darwin-arm64 node-v24.6.0
$ reforge --help [COMMAND]
USAGE
  $ reforge COMMAND
...

Commands

reforge create NAME

Create a new item in Reforge

USAGE
  $ reforge create NAME --type boolean-flag|boolean|string|double|int|string-list|json [--json]
    [--interactive] [--no-color] [--verbose] [-p <value>] [--confidential] [--env-var <value>] [--value <value>]
    [--secret] [--secret-key-name <value>]

ARGUMENTS
  NAME  name for your new item (e.g. my.new.flag)

FLAGS
  --confidential             mark the value as confidential
  --env-var=<value>          environment variable to get value from
  --secret                   encrypt the value of this item
  --secret-key-name=<value>  [default: reforge.secrets.encryption.key] name of the secret key to use for
                             encryption/decryption
  --type=<option>            (required)
                             <options: boolean-flag|boolean|string|double|int|string-list|json>
  --value=<value>            default value for your new item

GLOBAL FLAGS
  -p, --profile=<value>   Profile to use (defaults to ENV var REFORGE_PROFILE or "default")
      --[no-]interactive  Force interactive mode
      --json              Format output as json.
      --no-color          Do not colorize output
      --verbose           Verbose output

DESCRIPTION
  Create a new item in Reforge

EXAMPLES
  $ reforge create my.new.flag --type boolean-flag

  $ reforge create my.new.flag --type boolean-flag --value=true

  $ reforge create my.new.string --type string --value="hello world"

  $ reforge create my.new.string --type string --value="hello world" --secret

  $ reforge create my.new.string --type string --env-var=MY_ENV_VAR_NAME

  $ reforge create my.new.string --type json --value="{\"key\": \"value\"}"

See code: src/commands/create.ts

reforge download

Download a Datafile for a given environment

USAGE
  $ reforge download [--json] [--interactive] [--no-color] [--verbose] [-p <value>] [--environment <value>]
    [--sdk-key <value>]

FLAGS
  --environment=<value>  environment to download
  --sdk-key=<value>      SDK key for authentication (uses legacy download endpoint)

GLOBAL FLAGS
  -p, --profile=<value>   Profile to use (defaults to ENV var REFORGE_PROFILE or "default")
      --[no-]interactive  Force interactive mode
      --json              Format output as json.
      --no-color          Do not colorize output
      --verbose           Verbose output

DESCRIPTION
  Download a Datafile for a given environment

  You can serve a datafile using the `serve` command.

EXAMPLES
  $ reforge download --environment=test

  $ reforge download --environment=test --sdk-key=YOUR_SDK_KEY

See code: src/commands/download.ts

reforge generate

Generate type definitions for your Reforge configuration

USAGE
  $ reforge generate [--json] [--interactive] [--no-color] [--verbose] [-p <value>] [-o <value>] [--targets
    <value>]

FLAGS
  -o, --output-directory=<value>  Override the output directory for generated files
      --targets=<value>           [default: react-ts] Determines for language/framework to generate code for (node-ts,
                                  react-ts)

GLOBAL FLAGS
  -p, --profile=<value>   Profile to use (defaults to ENV var REFORGE_PROFILE or "default")
      --[no-]interactive  Force interactive mode
      --json              Format output as json.
      --no-color          Do not colorize output
      --verbose           Verbose output

DESCRIPTION
  Generate type definitions for your Reforge configuration

  You can use the default type-generation configuration, or by provide your own via a reforge.config.json file:

  Format:
  {
  ​  outputDirectory?: string;
  ​  targets?: {
  ​    <language key>?: {
  ​      outputDirectory?: string;
  ​      outputFileName?: string;
  ​    }
  ​  }
  };

  Example reforge.config.json:
  ```json
  {
  ​  "outputDirectory": "path/to/your/directory",
  ​  "targets": {
  ​    "react-ts": {
  ​      "outputDirectory": "diff/path/to/your/directory",
  ​      "declarationFileName": "reforge-client-types.d.ts",
  ​      "clientFileName": "reforge-client.ts",
  ​    },
  ​    "node-ts": {
  ​      "declarationFileName": "reforge-server-types.d.ts",
  ​      "clientFileName": "reforge-server.ts",
  ​    }
  ​  }
  }

EXAMPLES $ reforge generate # react-ts only by default

$ reforge generate --targets node-ts # node-ts only

$ reforge generate --targets react-ts,node-ts # both node + react-ts

$ reforge generate -o ./src/generated # specify output directory

$ reforge generate --targets node-ts -o ./dist # combine with targets


_See code: [src/commands/generate.ts](https://github.com/ReforgeHQ/cli/blob/v0.0.14/src/commands/generate.ts)_

## `reforge generate-new-hex-key`

Generate a new hex key suitable for secrets

USAGE $ reforge generate-new-hex-key [--json] [--interactive] [--no-color] [--verbose]

GLOBAL FLAGS --[no-]interactive Force interactive mode --json Format output as json. --no-color Do not colorize output --verbose Verbose output

DESCRIPTION Generate a new hex key suitable for secrets

EXAMPLES $ reforge generate-new-hex-key


_See code: [src/commands/generate-new-hex-key.ts](https://github.com/ReforgeHQ/cli/blob/v0.0.14/src/commands/generate-new-hex-key.ts)_

## `reforge get [NAME]`

Get the value of a config/feature-flag/etc.

USAGE $ reforge get [NAME] [--json] [--interactive] [--no-color] [--verbose] [-p ] [--environment ]

ARGUMENTS NAME config/feature-flag/etc. name

FLAGS --environment= environment to evaluate in

GLOBAL FLAGS -p, --profile= Profile to use (defaults to ENV var REFORGE_PROFILE or "default") --[no-]interactive Force interactive mode --json Format output as json. --no-color Do not colorize output --verbose Verbose output

DESCRIPTION Get the value of a config/feature-flag/etc.

EXAMPLES $ reforge get my.config.name

$ reforge get my.config.name --environment=production


_See code: [src/commands/get.ts](https://github.com/ReforgeHQ/cli/blob/v0.0.14/src/commands/get.ts)_

## `reforge info [NAME]`

Show details about the provided config/feature-flag/etc.

USAGE $ reforge info [NAME] [--json] [--interactive] [--no-color] [--verbose] [-p ] [--exclude-evaluations]

ARGUMENTS NAME config/feature-flag/etc. name

FLAGS --exclude-evaluations Exclude evaluation data

GLOBAL FLAGS -p, --profile= Profile to use (defaults to ENV var REFORGE_PROFILE or "default") --[no-]interactive Force interactive mode --json Format output as json. --no-color Do not colorize output --verbose Verbose output

DESCRIPTION Show details about the provided config/feature-flag/etc.

EXAMPLES $ reforge info my.config.name


_See code: [src/commands/info.ts](https://github.com/ReforgeHQ/cli/blob/v0.0.14/src/commands/info.ts)_

## `reforge interactive`

USAGE $ reforge interactive [--json] [--interactive] [--no-color] [--verbose]

GLOBAL FLAGS --[no-]interactive Force interactive mode --json Format output as json. --no-color Do not colorize output --verbose Verbose output

EXAMPLES $ reforge


_See code: [src/commands/interactive.ts](https://github.com/ReforgeHQ/cli/blob/v0.0.14/src/commands/interactive.ts)_

## `reforge list`

Show keys for your config/feature flags/etc.

USAGE $ reforge list [--json] [--interactive] [--no-color] [--verbose] [-p ] [--configs] [--feature-flags] [--log-levels] [--schemas] [--segments]

FLAGS --configs include configs --feature-flags include flags --log-levels include log levels --schemas include schemas --segments include segments

GLOBAL FLAGS -p, --profile= Profile to use (defaults to ENV var REFORGE_PROFILE or "default") --[no-]interactive Force interactive mode --json Format output as json. --no-color Do not colorize output --verbose Verbose output

DESCRIPTION Show keys for your config/feature flags/etc.

All types are returned by default. If you pass one or more type flags (e.g. --configs), only those types will be returned

EXAMPLES $ reforge list

$ reforge list --feature-flags


_See code: [src/commands/list.ts](https://github.com/ReforgeHQ/cli/blob/v0.0.14/src/commands/list.ts)_

## `reforge login`

Log in to Reforge using OAuth

USAGE $ reforge login [--json] [--interactive] [--no-color] [--verbose] [-p ]

FLAGS -p, --profile= Profile name to create or update (defaults to "default")

GLOBAL FLAGS --[no-]interactive Force interactive mode --json Format output as json. --no-color Do not colorize output --verbose Verbose output

DESCRIPTION Log in to Reforge using OAuth

EXAMPLES $ reforge login

$ reforge login --profile myprofile


_See code: [src/commands/login.ts](https://github.com/ReforgeHQ/cli/blob/v0.0.14/src/commands/login.ts)_

## `reforge logout`

Log out and clear stored authentication tokens

USAGE $ reforge logout [--json] [--interactive] [--no-color] [--verbose]

GLOBAL FLAGS --[no-]interactive Force interactive mode --json Format output as json. --no-color Do not colorize output --verbose Verbose output

DESCRIPTION Log out and clear stored authentication tokens

EXAMPLES $ reforge logout


_See code: [src/commands/logout.ts](https://github.com/ReforgeHQ/cli/blob/v0.0.14/src/commands/logout.ts)_

## `reforge mcp`

Configure Reforge MCP server for your AI assistant

USAGE $ reforge mcp [--json] [--interactive] [--no-color] [--verbose] [--editor claude-code|codeium] [--url ]

FLAGS --editor= Editor to configure (cursor, vscode, claude, windsurf) <options: claude-code|codeium> --url= Internal URL for testing (defaults to https://launch.reforge.com/api/v1/mcp)

GLOBAL FLAGS --[no-]interactive Force interactive mode --json Format output as json. --no-color Do not colorize output --verbose Verbose output

DESCRIPTION Configure Reforge MCP server for your AI assistant

EXAMPLES $ reforge mcp

$ reforge mcp --editor cursor

$ reforge mcp --url http://local-launch.goatsofreforge.com:3003/api/v1/mcp


_See code: [src/commands/mcp.ts](https://github.com/ReforgeHQ/cli/blob/v0.0.14/src/commands/mcp.ts)_

## `reforge override [NAME]`

Override the value of an item for your user/SDK key combo

USAGE $ reforge override [NAME] [--json] [--interactive] [--no-color] [--verbose] [-p ] [--environment ] [--remove] [--value ]

ARGUMENTS NAME config/feature-flag/etc. name

FLAGS --environment= environment to override in --remove remove your override (if present) --value= value to use for your override

GLOBAL FLAGS -p, --profile= Profile to use (defaults to ENV var REFORGE_PROFILE or "default") --[no-]interactive Force interactive mode --json Format output as json. --no-color Do not colorize output --verbose Verbose output

DESCRIPTION Override the value of an item for your user/SDK key combo

EXAMPLES $ reforge override # will prompt for name and value

$ reforge override my.flag.name --value=true

$ reforge override my.flag.name --remove

$ reforge override my.double.config --value=3.14159


_See code: [src/commands/override.ts](https://github.com/ReforgeHQ/cli/blob/v0.0.14/src/commands/override.ts)_

## `reforge profile`

Manage profiles and set default profile

USAGE $ reforge profile [--json] [--interactive] [--no-color] [--verbose]

GLOBAL FLAGS --[no-]interactive Force interactive mode --json Format output as json. --no-color Do not colorize output --verbose Verbose output

DESCRIPTION Manage profiles and set default profile

EXAMPLES $ reforge profile


_See code: [src/commands/profile.ts](https://github.com/ReforgeHQ/cli/blob/v0.0.14/src/commands/profile.ts)_

## `reforge schema NAME`

Manage schemas for Reforge configs

USAGE $ reforge schema NAME [--json] [--interactive] [--no-color] [--verbose] [-p ] [--get] [--set-zod ]

ARGUMENTS NAME name of the schema

FLAGS --get get the schema definition --set-zod= set a Zod schema definition

GLOBAL FLAGS -p, --profile= Profile to use (defaults to ENV var REFORGE_PROFILE or "default") --[no-]interactive Force interactive mode --json Format output as json. --no-color Do not colorize output --verbose Verbose output

DESCRIPTION Manage schemas for Reforge configs

EXAMPLES $ reforge schema my-schema --set-zod="z.object({url: z.string()})"

$ reforge schema my-schema --get


_See code: [src/commands/schema.ts](https://github.com/ReforgeHQ/cli/blob/v0.0.14/src/commands/schema.ts)_

## `reforge serve DATA-FILE`

Serve a datafile on a local port

USAGE $ reforge serve DATA-FILE [--json] [--interactive] [--no-color] [--verbose] [--port ]

ARGUMENTS DATA-FILE file to read

FLAGS --port= [default: 3099] port to serve on

GLOBAL FLAGS --[no-]interactive Force interactive mode --json Format output as json. --no-color Do not colorize output --verbose Verbose output

DESCRIPTION Serve a datafile on a local port

You can download a datafile using the download command.

You'll need to update your JavaScript (or React) client to point to this server.

e.g. endpoints: ["http://localhost:3099"],

EXAMPLES $ reforge serve ./reforge.test.588.config.json --port=3099


_See code: [src/commands/serve.ts](https://github.com/ReforgeHQ/cli/blob/v0.0.14/src/commands/serve.ts)_

## `reforge set-default [NAME]`

Set/update the default value for an environment (other rules still apply)

USAGE $ reforge set-default [NAME] [--json] [--interactive] [--no-color] [--verbose] [-p ] [--confidential] [--env-var ] [--environment ] [--value ] [--confirm] [--secret] [--secret-key-name ]

ARGUMENTS NAME config/feature-flag/etc. name

FLAGS --confidential mark the value as confidential --confirm confirm without prompt --env-var= environment variable to use as default value --environment= environment to change --secret encrypt the value of this item --secret-key-name= [default: reforge.secrets.encryption.key] name of the secret key to use for encryption/decryption --value= new default value

GLOBAL FLAGS -p, --profile= Profile to use (defaults to ENV var REFORGE_PROFILE or "default") --[no-]interactive Force interactive mode --json Format output as json. --no-color Do not colorize output --verbose Verbose output

DESCRIPTION Set/update the default value for an environment (other rules still apply)

EXAMPLES $ reforge set-default my.flag.name # will prompt for value and env

$ reforge set-default my.flag.name --value=true --environment=staging

$ reforge set-default my.flag.name --value=true --secret

$ reforge set-default my.config.name --env-var=MY_ENV_VAR_NAME --environment=production


_See code: [src/commands/set-default.ts](https://github.com/ReforgeHQ/cli/blob/v0.0.14/src/commands/set-default.ts)_

## `reforge whoami`

Display information about the currently logged in user

USAGE $ reforge whoami [--json] [--interactive] [--no-color] [--verbose]

GLOBAL FLAGS --[no-]interactive Force interactive mode --json Format output as json. --no-color Do not colorize output --verbose Verbose output

DESCRIPTION Display information about the currently logged in user

EXAMPLES $ reforge whoami


_See code: [src/commands/whoami.ts](https://github.com/ReforgeHQ/cli/blob/v0.0.14/src/commands/whoami.ts)_

## `reforge workspace`

Switch active workspace or display current workspace

USAGE $ reforge workspace [--json] [--interactive] [--no-color] [--verbose]

GLOBAL FLAGS --[no-]interactive Force interactive mode --json Format output as json. --no-color Do not colorize output --verbose Verbose output

DESCRIPTION Switch active workspace or display current workspace

EXAMPLES $ reforge workspace


_See code: [src/commands/workspace.ts](https://github.com/ReforgeHQ/cli/blob/v0.0.14/src/commands/workspace.ts)_
<!-- commandsstop -->

## Local Development

mise install git submodule init git submodule update yarn install yarn build bin/dev.js fish -c "cd ../../reforgehq/cli;bin/dev.js"


## Releasing

yarn version npm publish --access public


## Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and
create. Any contributions you make are **greatly appreciated**. For detailed contributing
guidelines, please see [CONTRIBUTING.md](CONTRIBUTING.md)

About

@reforge-com/cli public package

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 6

Languages