NimCode is an AI coding assistant that runs in your terminal, written in pure Nim with no external dependencies.
- Pure Nim — Uses only the Nim standard library, no external dependencies
- Multiple providers — Supports OpenAI-compatible APIs (OpenAI, DeepSeek, etc.)
- Built-in tools — read, write, edit, bash, ls, grep, find
- Session persistence — JSONL session storage for conversation history
- Multiple modes — plan (read-only), agent (default), yolo (unrestricted)
| Platform | amd64 | arm64 | Notes |
|---|---|---|---|
| Linux | ✓ | ✓ | Primary targets |
| Windows | ✓ | ○しろまる | amd64 ready; arm64 needs cross-compiler |
| macOS | ○しろまる | ○しろまる | Cross-compilation requires Zig or osxcross |
| Linux (loongarch64) | ○しろまる | — | --cpu:loongarch64 supported by Nim 2.2+ |
- Nim >= 2.0.0
gcc(for Linux amd64 native builds)
The following packages provide the cross-compilers used by ./scripts/build-cross-platform.sh:
Debian 12 / Ubuntu 22.04+:
# Linux amd64 (native) + arm64 (cross) sudo apt-get install -y gcc gcc-aarch64-linux-gnu libc6-dev-arm64-cross # Windows amd64 (cross) sudo apt-get install -y mingw-w64 # Optional: all platforms with one tool (recommended) # Install Zig and it will handle linux-arm64, windows-arm64, macOS, loongarch64 wget https://ziglang.org/download/0.14.0/zig-linux-x86_64-0.14.0.tar.xz tar -xf zig-linux-x86_64-0.14.0.tar.xz sudo mv zig-linux-x86_64-0.14.0 /opt/zig sudo ln -s /opt/zig/zig /usr/local/bin/zig
Package reference by target:
| Target | Debian/Ubuntu Package |
|---|---|
| linux-amd64 | gcc (native) |
| linux-arm64 | gcc-aarch64-linux-gnu + libc6-dev-arm64-cross |
| linux-arm | gcc-arm-linux-gnueabihf + libc6-dev-armhf-cross |
| linux-loongarch64 | gcc-loongarch64-linux-gnu (Debian 13+/unstable) |
| windows-amd64 | mingw-w64 |
| windows-arm64 | mingw-w64 (>= 10.0, Debian 12+) |
| macos-amd64/arm64 | No Debian package; use Zig or osxcross |
# Clone the repository git clone <repository-url> cd nimcode # Compile (native Linux amd64) nim c -d:ssl -o:bin/nimcode src/nimcode.nim # Or with release optimizations nim c -d:ssl -d:release --opt:size -o:bin/nimcode src/nimcode.nim
Build binaries for all supported platforms, plus .deb and npm packages:
# Build everything make release # Or individual targets make cross-compile # Cross-platform binaries make package-deb # Debian package (host arch) make package-npm # npm tarball (no publish)
Outputs are placed in dist/.
Create a configuration file at ~/.nimcode/settings.json:
{
"defaultProvider": "deepseek",
"defaultModel": "deepseek-chat",
"defaultMode": "agent"
}Or use environment variables:
NIMCODE_PROVIDER— Default providerNIMCODE_MODEL— Default modelOPENAI_API_KEY— OpenAI API keyDEEPSEEK_API_KEY— DeepSeek API key
# Interactive mode ./bin/nimcode # With specific provider and model ./bin/nimcode -p deepseek -m deepseek-chat # YOLO mode (all tools auto-execute) ./bin/nimcode -M yolo # Print mode (non-interactive) ./bin/nimcode --print "explain this code" # Continue most recent session ./bin/nimcode -c
- read — Read file contents (supports text and images)
- write — Write content to files
- edit — Edit files using exact text replacement
- bash — Execute shell commands
- ls — List directory contents
- grep — Search file contents using regex
- find — Find files by name pattern
- plan — Read-only mode. Analyze code and create plans without modifying files.
- agent — Default mode. Read/write files and execute commands.
- yolo — Unrestricted mode. All tools auto-execute without approval.
# Compile nim c src/nimcode.nim # Run tests nim c -r tests/test_xxx.nim
MIT