1
0
Files
AnchorCli/README.md
2026-03-04 07:59:35 +01:00

4.7 KiB

AnchorCli

An AI-powered coding assistant built as a .NET 10.0 console application, featuring the Hashline technique for safe, precise file editing.

What is Hashline?

AnchorCli's unique approach to file editing. Every line returned by file tools is prefixed with a content-derived hash anchor:

1:a3|  function hello() {
2:f1|    return "world";
3:0e|  }

When editing, you reference these line:hash anchors instead of reproducing old content. Before any mutation, both the line number and hash are validated — stale anchors are rejected immediately.

This eliminates:

  • Whitespace/indentation reproduction errors
  • Silent edits to the wrong line in large files
  • Entire-file rewrites just to change one line

Features

  • Interactive REPL: Chat with an AI model to edit files, manage directories, and execute commands
  • Comprehensive Toolset: 12+ tools for file operations, editing, directory management, and command execution
  • AOT-Ready: Native AOT compilation for ~12 MB binaries with no .NET runtime dependency
  • Rich CLI: Beautiful terminal output using Spectre.Console with tables, rules, and colored text
  • Streaming Responses: Real-time AI response streaming in the terminal
  • OpenAI-Compatible: Works with any OpenAI-compatible API (OpenAI, Ollama, Cerebras, Groq, OpenRouter, etc.)

Requirements

  • .NET 10 SDK
  • clang (for native AOT publish on Linux)

Quick Start

export ANCHOR_API_KEY=your_key_here
export ANCHOR_MODEL=qwen3.5-27b       # optional, default: gpt-4o
export ANCHOR_ENDPOINT=https://api.openai.com/v1  # optional

dotnet run --project AnchorCli

Native AOT Build

dotnet publish AnchorCli -r linux-x64 -c Release
./AnchorCli/bin/Release/net10.0/linux-x64/publish/anchor

The resulting binary is ~12 MB, has no .NET runtime dependency, and starts instantly.

Environment Variables

Variable Default Description
ANCHOR_API_KEY (required) API key for the LLM provider
ANCHOR_ENDPOINT https://api.openai.com/v1 Any OpenAI-compatible endpoint
ANCHOR_MODEL gpt-4o Model name
ANCHOR_MAX_TOKENS 4096 Max response tokens

Available Tools

File Operations:

  • read_file - Read a file (or a window) with Hashline-tagged lines
  • grep_file - Search a file by regex — results are pre-tagged for immediate editing
  • find_files - Search for files matching glob patterns
  • get_file_info - Get detailed file information (size, permissions, etc.)

Edit Operations:

  • replace_lines - Replace a range identified by line:hash anchors
  • insert_after - Insert lines after an anchor
  • delete_range - Delete a range between two anchors
  • create_file - Create a new file with optional initial content
  • delete_file - Delete a file permanently
  • rename_file - Rename or move a file
  • copy_file - Copy a file to a new location
  • append_to_file - Append lines to the end of a file

Directory Operations:

  • list_dir - List directory contents
  • create_dir - Create a new directory (with parent directories)
  • rename_dir - Rename or move a directory
  • delete_dir - Delete a directory and all its contents

Command Execution:

  • execute_command - Run shell commands (with user approval)

Project Structure

AnchorCli/
├── Program.cs              # Entry point + REPL loop + AI client setup
├── Config/AppConfig.cs     # Environment variable configuration
├── Hashline/
│   ├── HashlineEncoder.cs  # Adler-8 + position-seed hashing
│   └── HashlineValidator.cs # Anchor resolution + validation
├── Tools/
│   ├── FileTools.cs        # read_file, grep_file, find_files, get_file_info
│   ├── EditTools.cs        # replace_lines, insert_after, delete_range, create/delete/rename/copy/append
│   ├── DirTools.cs         # list_dir, create_dir, rename_dir, delete_dir
│   └── CommandTool.cs      # execute_command
└── Json/AppJsonContext.cs  # Source-generated JSON context (AOT)

How It Works

  1. Setup: The AI client is configured with your API credentials and model preferences
  2. REPL Loop: You interact with the AI through a conversational interface
  3. Tool Calling: The AI can call any of the available tools to read/edit files, manage directories, or execute commands
  4. Hashline Validation: All file edits are validated using the Hashline technique to ensure precision
  5. Safe Execution: Commands require explicit user approval before running

Supported Models

AnchorCli works with any OpenAI-compatible API endpoint, including:

  • OpenAI (gpt-4o, gpt-4.1, etc.)
  • Ollama (local models)
  • Cerebras
  • Groq
  • OpenRouter (qwen3.5-27b, etc.)
  • Any custom OpenAI-compatible server

License

MIT License - See LICENSE file for details.