
Security News
Axios Maintainer Confirms Social Engineering Attack Behind npm Compromise
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.
@reforge-com/cli
Advanced tools
$ npm install -g @reforge-com/cli
$ reforge COMMAND
running command...
$ reforge (--version)
@reforge-com/cli/0.0.14 linux-x64 node-v24.4.1
$ reforge --help [COMMAND]
USAGE
$ reforge COMMAND
...
reforge create NAMEreforge downloadreforge generatereforge generate-new-hex-keyreforge get [NAME]reforge info [NAME]reforge interactivereforge listreforge loginreforge logoutreforge mcpreforge override [NAME]reforge profilereforge schema NAMEreforge serve DATA-FILEreforge set-default [NAME]reforge whoamireforge workspacereforge create NAMECreate 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 downloadDownload 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 generateGenerate 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)
FAQs
Reforge CLI
We found that @reforge-com/cli demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.