Skip to main content
Glama

fauxnix

CI npm version npm downloads license

WindowsでLinuxスタイルのコマンドを実行 — ネイティブに、決定論的に、VMもWSLも使わずに。

fauxnixはAIエージェント向けに作られたbash→PowerShell変換レイヤーです。エージェントが既に知っているbash(ls -la | grep foofind . -name '*.ts' | wc -lkill -9 1234)を書き続けると、fauxnixが各コマンドをPowerShellへ決定的に変換し、ネイティブに実行して、GNU/Linuxのような出力を返します。ls -lの列、bashスタイルのエラーメッセージ、coreutilsの終了コード、UTF-8/GBKも自動処理されます。

npm install -g fauxnix-cli    # then point any MCP harness at `fauxnix mcp`

fauxnix demo

$ fauxnix "ls -la src | head -2"
-rw-r--r-- 1 me me 1204 Aug 16 09:12 ast.ts
-rw-r--r-- 1 me me 8192 Aug 16 09:12 cli.ts

$ fauxnix "cat nope.txt"
cat: nope.txt: No such file or directory        # not a PowerShell stack trace

計測結果: あなたのモデルは、あなたが思っている以上にPowerShellが苦手かもしれません

同じモデル(DeepSeek-V4-Pro)、同じ5タスク、1台のWindowsマシン上の3つの実行モード — 完全なデータは docs/benchmark-deepseek-v4-pro.md`docs/benchmark-ark-models.md:

PowerShell

fauxnix

Git Bash

ツール呼び出し / 予期しないエラー

14 / 9

7 / 0

4 / 0

時間 (T1–T4)

163s

66s

57s

Volcano Ark Coding Planの7モデルすべてで、PowerShell対fauxnixの差はテストしたすべてのモデルで成立しました。最悪の場合(kimi-k2-thinking): PowerShellでの記述は3.1倍遅く、24件のエラーイベントが発生したのに対し、fauxnix経由ではエラーゼロでした。fauxnixはbashツールチェーンをインストールしなくても、実際のbashの上限値の約15%以内に収まります。

Related MCP server: wmux

なぜ

LLMエージェントはPowerShellよりもbashの方がはるかに優れています。bashがトレーニングデータの大部分を占めているため、Windows上のモデルは「正しく見えるが実行できない」コマンド(引用符の誤り、curlではないcurl、コードページ不一致による文字化け、不可解なCategoryInfoエラーダンプ)を生成しがちです。既存の解決策は、完全なVM(WSL — 重く、ファイルシステムが異なり、環境が分離されている)か、単なるシェルラッパー(内部はやはりPowerShell)のどちらかです。

fauxnixは第三の道を選びます: エミュレートではなく変換。Linuxコマンドラインの大規模で価値の高いサブセット(ファイル操作、テキスト処理、プロセス管理、アーカイブ、ネットワークの基本)は、PowerShell + .NETにきれいにマッピングできます。fauxnixはそのサブセットを忠実に実装し、変換できないものについてははっきりと、しかも役立つ形で失敗するため、エージェントが黙って誤った結果を得ることはありません。

インストール

npm install -g fauxnix-cli

またはソースから:

git clone https://github.com/20000419/fauxnix && cd fauxnix && npm install -g .

npmパッケージ名はfauxnix-cliです(npmのfauxnixという名前は無関係の2015年のwebsocketライブラリが所有しています)。インストールされるコマンドは引き続きfauxnixです。

必要条件: PowerShell 5.1+(内蔵)を備えたWindowsとNode.js ≥ 18。

クイックスタート

# one-off commands
fauxnix "ls -la"
fauxnix "grep -rn TODO src | wc -l"
fauxnix "cat log.txt | grep -i error | sort | uniq -c"

# see what a command becomes (great for debugging / learning PS)
fauxnix translate "find . -name '*.log' -mtime +7 -delete"

# check your environment
fauxnix check

# run the MCP stdio server (what agent harnesses connect to)
fauxnix mcp

不明なコマンド(git、node、npm、python、cargo、gh、docker、...)は、argvスタイルのクォートでネイティブにそのまま渡されます。文字列の再解析も、クォートのバグもありません。

エージェントハーネスで使う

fauxnixには、bashツール(さらにfauxnix_translatefauxnix_session)を公開するMCP stdioサーバーが同梱されています。MCP対応の任意のハーネスからこのサーバーを指定してください:

Claude Code

claude mcp add fauxnix -- fauxnix mcp

Codex (~/.codex/config.toml or codex mcp add fauxnix -- fauxnix mcp)

[mcp_servers.fauxnix]
command = "fauxnix"
args = ["mcp"]

注: 非対話型のcodex execモードでは、MCPツール呼び出しは承認レイヤーによって自動拒否されます。--dangerously-bypass-approvals-and-sandboxを渡すか(または対話的に実行して一度承認してください)。

OpenCode (opencode.json)

{
  "mcp": {
    "fauxnix": { "type": "local", "command": ["fauxnix", "mcp"] }
  }
}

Kimi Code — 他とは異なり、MCPサーバーはTOML設定ではなくJSONファイルにあります: ~/.kimi-code/mcp.json

{
  "mcpServers": {
    "fauxnix": { "command": "fauxnix", "args": ["mcp"] }
  }
}

任意のMCPクライアント — stdioサーバー: fauxnix mcp。ツール名はbashです(FAUXNIX_TOOL_NAMEで上書き可能)。ツールの説明にはサポート対象サブセットが既に含まれているため、システムプロンプトの変更は不要です。

MCPセッションは、cwd、環境変数、export/unsetcd -/OLDPWDをツール呼び出しをまたいで保持します。ステートレスなexecではなく、ログインしたシェルのように動作します。

変換対象

約105コマンド。開発中はすべてWindows上の実際のGNU coreutils(Git Bash)と出力を突き合わせています:

  • ファイル: ls cp mv rm mkdir rmdir touch mktemp ln readlink realpath basename dirname stat file du df find chmod chown diff

  • テキストフィルター: grep egrep sed awk sort uniq cut tr — sed/awkスクリプトは変換時に解析されます(サポートされていない構文は名前付きエラーをスローし、黙って誤動作することはありません)

  • テキストI/O: echo printf cat head tail wc tee nl tac md5sum sha1sum sha256sum base64 seq yes xargs

  • シェル/システム: cd pwd export unset env printenv ps kill pkill pgrep sleep which type whoami id groups date uname hostname uptime free nproc clear true false test [ [[ : pushd popd dirs sudo timeout man history less more source . eval exit alias set

  • ネットワーク: curl wget ping netstat ss ip ifconfig nslookup dig host

  • アーカイブ: tar gzip gunzip zcat zip unzip

さらにシェル構文: パイプ、&& / || / ;、リダイレクション(> >> 2> 2>&1 < &>/dev/null)、クォート、$VAR $(...)コマンド置換、VAR=x cmdプレフィックス、~展開、POSIXスタイルのパス正規化(/tmp/d/fooD:\foo)。

終了コードはbashの慣例に従います: 0=成功、1=失敗、2=使用法エラー/重大なエラー、127=コマンドが見つからない、124=タイムアウト。

仕組み

bash command ──parser──▶ AST ──translator──▶ PowerShell script ──executor──▶ powershell.exe
                                                                              │
agent ◀── GNU-style output, bash-style errors ◀── decoder (UTF-8 → GBK fallback) ◀┘
  • 決定的な変換、ランタイムでのLLM呼び出しゼロ

  • 各コマンドはジェネレーターに対応し、「Fauxnix契約」に従った自己完結型のPowerShellブロックを生成します: 1行に1文字列の標準出力、bashスタイルの標準エラーには[Console]::Error.WriteLine、終了コードには$script:fx_exit、標準入力には$input

  • 実行ラッパーはすべてのスクリプトにUTF-8強制([Console]::OutputEncoding$OutputEncodingchcp 65001)を適用し、レガシーなネイティブツール向けにGBK(936)フォールバック付きのstrict-UTF-8として出力をデコードし、CLIXMLシリアライゼーションとPowerShellのノイズを標準エラーから除去し、一般的なPowerShellエラー(zh-CNロケールのメッセージを含む)をbash風の表現に書き換えます。

  • スクリプトは-EncodedCommand(UTF-16LE)で実行され、32KBのコマンドライン制限を超える場合は一時.ps1ファイルへ透過的にフォールバックします。

既知の差異(正直なリスト)

fauxnixはエージェントが実際に実行するコマンドに最適化されています。文書化された差異:

  • X=1のような単独の代入はexportセマンティクスに従います(セッション全体で1つの環境。bashのシェル変数とエクスポート変数の区別は存在しません)。また、同じセグメント内のプレフィックスは、コマンド自身の単語内の$VARから参照できます(Z=in [[ $Z == in ]]はここでは真ですが、単語展開が一時環境より先に行われるbashでは偽です)。

  • yesは65,536行に制限されています — PS 5.1のパイプラインは上流のプロデューサーに停止を通知できないため、制限なしのyes | headはハングします。

  • tail -fsourceevalalias、ヒアドキュメント、バッククォート、シェルの制御フロー(if/for/while)、バックグラウンド&は、誤動作する代わりに、対処可能なエラーメッセージ付きで拒否されます。

  • chmodは読み取り専用ビットのみをマップします。実行ビットはWindowsでは何も行いません。chownは(Git Bashと同様に)黙って何もしません。

  • ps auxの列は近似値です(プロセスごとのCPU%計算なし、USERは?と表示されます)。

  • gzip -c/パイプライン標準入力はバイト単位ではなくテキスト単位で忠実です。ファイルモードのgzip fはバイト単位で正確です。

  • 正確に1行を生成するパイプラインをwc -lにパイプすると、その行を1行として数えます(プロデューサーが末尾の改行を省略した場合、bashは0と数えます)。printf 'x' | md5sumはバイト単位で正確です。

  • sed/awkは一般的なサブセットをサポートします。ホールドスペース、ラベル、配列、ループは変換時に「not supported」という名前付きエラーをスローします。

  • curl/wgetは、エージェント駆動のHTTPに対する安全のデフォルトとして、ループバック/プライベート/予約済みアドレス(localhost、127.x、::1、10.x、172.16–31.x、192.168.x、169.254.x)を拒否します。

  • ネイティブツールのパイプラインとエンコーディング: PS 5.1にはコンソールエンコーディングの設定が1つしかないため、ローカライズされた管理ツール(ipconfig、tasklist — zh-CNではGBK)とUTF-8ネイティブの開発ツール(node、curl)をパイプライン内で同時に正しくデコードすることはできません。デフォルトはUTF-8の開発ツール優先です。エージェントがネイティブWindows管理ツールの中国語出力をgrepする場合は、FAUXNIX_NATIVE_ENCODING=ansiを設定してください。ファイルの読み取りは常にファイルごとに判定されます(strict UTF-8 → GBKフォールバック)。そのため、GBKのファイルに対するgrep/sed/awkはどちらのモードでも動作します — ロケールが想定するエンコーディングのみに一致するGit Bashとは異なります。

開発

npm install
npm test          # unit + real-PowerShell integration suite (Windows only, auto-skipped elsewhere)
npm run build
npx tsx scratch/run.mjs "any bash command"   # quick live check

アーキテクチャマップ: src/parser.ts(bashサブセット → AST)· src/translator.ts(AST → PowerShell + 実行ラッパー)· src/executor.ts(spawn、リダイレクト、セッション永続化)· src/commands/*.ts(コマンドごとのジェネレーター)· src/mcp.ts(MCPサーバー)· src/cli.ts

ライセンス

MIT © 20000419

A
license - permissive license
-
quality - not tested
A
maintenance

Maintenance

Maintainers
<1hResponse time
Release cycle
Releases (12mo)
Commit activity

Related MCP Servers

  • F
    license
    -
    quality
    A
    maintenance
    Enables AI assistants to execute PowerShell commands, manage files, inspect projects, run Git operations, and monitor system information on Windows through a local MCP server.

View all related MCP servers

Related MCP Connectors

  • Package intelligence MCP for AI agents — 22 tools, 19 ecosystems, AGPL SDK, free.

  • Deterministic reasoning stack for AI agents: simulate, decide & compute, plus cross-domain tools.

  • Deterministic AI agent microtools, no accounts/API keys. fetch_extract: 98% token cut. 38 tools.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/20000419/fauxnix'

If you have feedback or need assistance with the MCP directory API, please join our Discord server