Motty
原生桌面 SSH 工作台:终端、SFTP/SCP、端口转发、VNC 与 RDP 远程桌面、AI 助手都在一个窗口里。Go 编写,没有 Electron,空闲时保持安静。免费开源,支持 macOS、Windows 和 Linux。
翻译准备中
AI coding agent for your terminal. Read, edit and run code with multiple model providers, local models, sandbox controls and MCP. Built in Rust.
翻译准备中
正在加载完整 README。
查看完整 README ↗An AI coding agent for your terminal, built in Rust. Read a codebase, make reviewable edits and run commands with configurable sandbox and approval controls. Choose Ditfa, another supported model provider, or a local model.
Website · Downloads · Getting started · Model providers · Discussions
Download the installer, review it, then run it:
curl -fsSL https://github.com/ditfa-dev/ditfa-cli/releases/latest/download/install.sh -o install.sh
# Review install.sh before running it.
sh install.sh
ditfa --version
Invoke-WebRequest https://github.com/ditfa-dev/ditfa-cli/releases/latest/download/install.ps1 -OutFile install.ps1
# Review install.ps1 before running it.
& .\install.ps1
ditfa --version
Download an archive and SHA256SUMS from the latest release. Builds are available for macOS, Linux and Windows on x64 and arm64; availability can vary by release. The native installers verify the archive checksum. See installation details for building from source.
The repository includes npm launcher source, but the ditfa package is not currently available in the public npm registry. Use the native installers or release archives above.
Create a key at chat.ditfa.com/api-keys, set it in your shell and open a project:
export DITFA_API_KEY="your-ditfa-api-key"
cd my-project
ditfa
In PowerShell, use $env:DITFA_API_KEY = "your-ditfa-api-key". Keep your key out of source control. With a Ditfa key configured and no provider override, the CLI selects an available model for your account.
Try: “Explain this project and suggest a small improvement.” Review the proposed edits and command approvals before accepting changes.
For a task from a script:
ditfa exec "add unit tests for the parser and make them pass"
| Capability | What you can do |
|---|---|
| Code editing | Inspect files, propose patches and run project commands locally. |
| Model providers | Use Ditfa, OpenAI, Anthropic, Gemini, OpenRouter, DeepSeek or an OpenAI-compatible endpoint. |
| Local models | Connect Ollama, LM Studio or another compatible local server. |
| Execution controls | Configure sandbox access and command approval policies for your workflow. |
| Persistent sessions | Continue earlier work with ditfa resume. |
| MCP and skills | Connect tools through Model Context Protocol and add reusable workflows and AGENTS.md instructions. |
| Automation | Use ditfa exec, JSON output and output schemas in scripts. |
| Editor integration | Explore the VS Code extension and SDKs. |
Set the provider's API key and select a model available to your account:
export ANTHROPIC_API_KEY="your-provider-api-key"
ditfa -c model_provider=anthropic -m YOUR_MODEL_ID
# Or connect a local Ollama server.
ditfa --oss --local-provider ollama
Provider and model support depend on the endpoint and account you use. See PROVIDERS.md for exact environment variables, wire protocols and custom endpoints.
| Guide | Start here for |
|---|---|
| Getting started | Your first session, common commands and setup checks |
| Model providers | Hosted providers, API keys and local models |
| Sandbox and approvals | Execution boundaries and safer workflows |
| Configuration | Configuration entry points |
| Contributing | Development setup and pull requests |
| Security policy | Private vulnerability reporting |
Install Rust through rustup; the repository pins its toolchain in ditfa-rs/rust-toolchain.toml.
git clone https://github.com/ditfa-dev/ditfa-cli.git
cd ditfa-cli/ditfa-rs
cargo build --release --bin ditfa
./target/release/ditfa --version
The Rust workspace is large. Use cargo build -j 2 to limit parallel compilation on smaller machines. Read CONTRIBUTING.md before opening a pull request.
Ditfa CLI is licensed under Apache-2.0. It is derived from an Apache-2.0 project by OpenAI. See NOTICE for attribution. Third-party model names and trademarks belong to their respective owners.