fauxnix

Bash-style shell for agents on Windows, translated to PowerShell and run natively

By 20000419 (individual) TypeScript Local · stdio Developer tools

60 popularity score ★ 899 ↓ 79/wk

Connect your client

Local (npm)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

FirstTerminal
npm install -g fauxnix-cli
Claude CodeTerminal
claude mcp add fauxnix -- fauxnix mcp
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "fauxnix": {
      "command": "fauxnix",
      "args": [
        "mcp"
      ]
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "fauxnix": {
      "command": "fauxnix",
      "args": [
        "mcp"
      ]
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "fauxnix": {
      "type": "stdio",
      "command": "fauxnix",
      "args": [
        "mcp"
      ]
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.fauxnix]
command = "fauxnix"
args = ["mcp"]
Gemini CLITerminal
gemini mcp add --scope user fauxnix fauxnix -- mcp

Settings 3

FAUXNIX_PS Optional: Set to pwsh to use PowerShell 7 instead of Windows PowerShell 5.1. pwsh.exe must sit in an absolute PATH folder outside the working directory, and other values make it fail at start.
FAUXNIX_TOOL_NAME Optional: Name of the main shell tool. The batch tool becomes this name plus _batch. Default bash.
FAUXNIX_NATIVE_ENCODING Optional: Set to ansi to decode native program output as GBK instead of UTF-8, for localized Windows admin tools. Default utf8.

What it does

fauxnix gives a coding assistant on Windows a shell tool that accepts the bash commands models tend to write and turns each one into a PowerShell script by fixed rules, with no model calls involved. The script runs in a resident PowerShell process on your machine, and the reply is shaped like GNU output: ls -l style columns, bash-style error lines and bash exit codes (127 for an unknown command, 124 on timeout, 130 when cancelled). About 109 commands are covered, from file and text tools (ls, find, grep, sed, awk, sort) to process, network and archive commands. Anything it does not translate, such as git, node or python, is passed through to the real program.

The MCP server in v2.1.1 registers four tools (src/mcp.ts), though the README's MCP section only names two. There is a bash tool that keeps working directory, exported variables and positional parameters between calls, and bash_batch for running up to 32 steps in one call with a shared time and output budget. fauxnix_translate shows the PowerShell it would run without executing it, and fauxnix_session checks or resets the shell state. The main tool's name can be changed with FAUXNIX_TOOL_NAME, and the batch tool follows it with a _batch suffix.

The same npm package also ships a command-line tool and an installer that writes the config for Claude Code, Codex, OpenCode, Kimi Code and Qwen Code. It is the work of one developer, not of Microsoft.

What it needs

RuntimeNode.js 22.20.0+
Runs onWindows
Also
  • Windows PowerShell 5.1 (built in), or PowerShell 7 when FAUXNIX_PS=pwsh

Install the package globally with npm install -g fauxnix-cli. Running fauxnix install --claude (or --codex, --opencode, --kimi, --qwen) writes the client config for you with the absolute paths filled in. To write it by hand, find the package folder with npm root -g. Node 18 and 20 are not supported from v2. No account or sign-in is needed.

Limits

  • Platform Windows only. Not meant for macOS or Linux.
  • Not covered Covers a subset of bash: heredocs, background &, tail -f, eval, alias and env -i are refused with an error.
  • Not covered sed and awk lack hold space, labels, arrays and loops. chmod only maps the read-only bit and chown does nothing.
  • Size cap Each call times out after 120 s by default, up to 600 s with timeout_ms (src/executor.ts, src/mcp.ts).
  • Size cap Output is capped at 256 KiB stdout and 64 KiB stderr per call for bash and per batch for bash_batch (src/mcp.ts).
  • Size cap bash_batch takes 1 to 32 steps of up to 16,384 characters each and stops at the first nonzero exit unless stop_on_error is false.
  • Limit A timeout or cancel kills the PowerShell host, but programs the command started may keep running (SECURITY.md).
  • Limit A bare fauxnix command in a client config fails in clients that spawn it directly, since it is an npm shim. Use the absolute Node form.
  • Limit In non-interactive codex exec, MCP tool calls are denied unless approvals are bypassed.

Windows only. It covers a subset of bash: heredocs, background &, tail -f, eval, alias and env -i are refused with an error, and sed and awk lack hold space, labels, arrays and loops. yes stops at 65,536 lines. chmod only maps the read-only bit and chown does nothing. Each call times out after 120 s by default (up to 600 s with timeout_ms); bash_batch output defaults to 256 KiB stdout and 64 KiB stderr. A timeout or cancel kills the PowerShell host, and per SECURITY.md programs the command started may keep running. In non-interactive codex exec, MCP tool calls are denied unless approvals are bypassed.

Who it suits

Suits people running Claude Code, Codex or similar agents on Windows machines where Git Bash or WSL is missing, unreliable or not allowed, such as CI runners or locked-down PCs, and who want the agent to keep writing bash. Its own README says that if Git Bash already works for you, you should keep using it, since that gives real GNU behaviour. Pick WSL when you need full Linux tools. Not for macOS or Linux, where a normal shell already does the job. Since it runs commands as you with no sandbox, use it behind a client that asks before each command if you want that check.

Tools 4

1 only reads, 1 changes things, 2 can delete or overwrite. A ? marks an optional parameter.

bash deletes
Runs a bash-style command line through PowerShell in a persistent session and returns GNU-style output and exit codecommand: stringtimeout_ms?: integer
bash_batch deletes
Checks and runs up to 32 commands in order in one call, with one result per step and a shared time and output budgetsteps: arraystop_on_error?: booleantimeout_ms?: integerstdout_limit_bytes?: integerstderr_limit_bytes?: integer
fauxnix_translate
Shows the PowerShell script a bash command would become, without running itcommand: string
fauxnix_session changes
Shows or resets the session's working directory, tracked variables and positional parametersaction?: enum

Similar servers