Skip to main content

UTIM CLI Agent: Enterprise Coder Assistant

UTIM is an agentic developer CLI assistant designed to automate coding tasks directly inside your local terminal, featuring robust safety controls, self-healing quality gates, and local-first semantic memory.


🚀 Quick Start

1. Installation

Recommended: Automated Installer (UNIX / macOS / Android Termux) Use the automated installation script, which detects your environment (such as Termux) and automatically installs build dependencies (like rust, clang, and binutils) and configures correct API levels:

curl -sL https://raw.githubusercontent.com/emendai/utim/main/install.sh | bash

Alternative: Local Installation (from source)

# Basic installation
pip install .

# Recommended: Full installation (includes semantic vector RAG & web search)
pip install ".[full]"

2. Provider & Model Configuration

Start the chat session:

utim

On first run, UTIM checks for .utim/config.json. If it does not exist, it runs a provider and model configuration wizard. You can configure:

  • Default Providers: OpenRouter, OpenAI, custom servers, etc.
  • Model Picker: Press Ctrl+M in the chat terminal at any time to configure, pick, add, or delete LLMs.

⚡ Main CLI Commands

  • utim: Starts the interactive chat terminal (TUI).
  • utim task "<prompt>": Executes a single task autonomously from the command line and exits. In an interactive terminal (stdin is a TTY) file writes and commands prompt for confirmation; when piped/scripted they run in auto-accept mode.
  • utim --dry-run: Starts the session in Dry-Run Mode (all code modifications and shell commands are simulated, not written/executed).
  • utim --sandbox: Runs all mutating shell command proposals in the intelligent local sandbox (untrusted commands will block until approved).
  • utim doctor / utim init / utim reset: Administrative commands for state diagnosis, initialization, and factory resets.

🛠️ In-Chat Slash Commands

Inside the interactive chat terminal, type these slash commands for direct workspace control:

  • /undo: Reverts the last assistant action, restoring files to their exact "before" state and rolling back messages.
  • /redo: Re-applies the last undone turn, re-writing files and restoring conversation logs.
  • /rewind <turn_index>: Rolls back the entire session to a specific conversation turn.
  • /doctor: Run diagnostics on environment variables, Python version, dependencies, API model connections, and MCP server status.
  • /report: Generates a support bundle under .utim_tmp/report_bundle.zip (automatically redacts secrets, passwords, or personal names/files).
  • /reset: Wipes the current chat history without deleting persistent local vector memory.

🧠 Architecture & How it Works

  1. Local Memory (.utim/memory.json & ChromaDB):
    • Global user preferences, rules, and facts are synced to a semantic vector database (.utim_tmp/vector_db).
    • Relevant memories are dynamically fetched via semantic similarity (RAG) and injected into the system prompt context, preventing prompt bloating.
  2. Undo/Redo Stack & Session State:
    • Every file change (writes, batch string edits, moves, deletions) computes a diff snapshot.
    • The entire stack is serialized dynamically to .utim/session_state.json. You can close your shell, shut down your computer, and resume later with intact rollback features.
  3. Workspace Boundary & Safety Controls:
    • Prior to writing files, UTIM performs Pre-Commit Syntax Checks (AST compilation for Python, JSON loads, JS/TS checks).
    • If tests are available (pytest, npm test, etc.), UTIM runs them in a background Regression testing loop, prompting the model to self-heal code errors if assertions fail.
    • Interactive TUI mode (utim): every file mutation shows an interactive diff dialog; the developer accepts, edits, or rejects individual hunks before they are applied.
    • CLI task mode (utim task): when running in a real terminal, destructive operations (rm, package installs, > redirects) prompt for y/n confirmation. When stdin is piped/non-interactive all edits are auto-accepted.
    • Sandbox mode (utim --sandbox): classifies every terminal command as safe or risky and blocks risky commands until explicitly approved.

⚠️ What this Tool Can and Cannot Do

Can Do:

  • Read, write, and patch codebases safely.
  • Install and coordinate custom MCP (Model Context Protocol) servers.
  • Self-heal syntax and test errors before files are written.
  • Revert any file modification instantly.

Cannot Do:

  • No Remote Code Execution: Runs locally on your machine.
  • Unverified Sensitive Reads Blocked: Reading files or memory matching sensitive keys (like passwords, secret codes, or personal data) is blocked unless verified via your configured verification code.
  • No Auto-Deletions: Any command that deletes files outside the working directory is blocked automatically.

📋 Compatibility Matrix

Component Minimum Version Recommended Version Notes
Python 3.10 3.11+ 3.10 required for asyncio features
pip 21.0 23.0+ For modern dependency resolution
Node.js 18.0 20.0+ Only if using MCP servers
Operating System
- Windows 10 (1903+) 11 PowerShell or CMD required
- macOS 11 (Big Sur) 14 (Sonoma) Terminal.app or iTerm2
- Linux Ubuntu 20.04 Ubuntu 22.04+ Any modern distro with bash
Terminals
- Windows Terminal 1.0 1.19+ Full color support
- iTerm2 3.4+ 3.5+ Recommended on macOS
- VS Code Terminal 1.70+ 1.85+ Full support
Required Tools
- git 2.30 2.40+ For undo/redo and diffs
- Docker 20.10 24.0+ Optional, for sandbox mode

Supported LLM Providers

Provider API Type Models Supported
OpenRouter REST Claude, GPT, Gemini, Mistral, etc.
OpenAI REST GPT-4o, GPT-4 Turbo, GPT-3.5
Anthropic REST Claude 3.5, 3, 2
Google AI REST Gemini 1.5 Pro/Flash
Azure OpenAI REST GPT-4, GPT-3.5
Ollama Local Llama 3, Mistral, CodeLlama
Custom Server REST Any OpenAI-compatible API

📦 Installation Methods

npm install -g @emend-ai/utim

pip (from PyPI)

pip install utim-cli
# Full install with optional features (web search, images, parsers)
pip install "utim-cli[full]"

Desktop installs include the normal SDK/MCP path automatically. Mobile/Termux installs keep those native-heavy pieces optional to avoid pydantic-core; use utim-cli[mcp] or utim-cli[legacy-agent] only if you explicitly need them. Do not install utim_cli/server/requirements.txt unless you are deploying the server.

Source install (development)

git clone https://github.com/emendai/utim.git
cd utim
pip install -e ".[full]"

Smoke-test your install

utim --version     # Should print the current version
utim doctor        # Runs diagnostics — all checks should pass

See INSTALLATION_VERIFICATION.md for detailed verification steps and troubleshooting.

🔢 Version

UTIM uses a single canonical version defined in utim_cli/_version.py. Run python scripts/sync_version.py to propagate a version bump to all surfaces (package.json, pyproject.toml, CHANGELOG.md) before releasing.

Metadata

Release files for utim-cli 2.3.20

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for utim-cli 2.3.20
File Size Uploaded
utim_cli-2.3.20.tar.gz 1.0 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for utim-cli 2.3.20
File Interpreter ABI Platform
utim_cli-2.3.20-py3-none-any.whl Python 3 none any Details

Total release size: 2.1 MB

Release files / utim_cli-2.3.20.tar.gz

Download URL utim_cli-2.3.20.tar.gz
Size 1.0 MB
Tags Source
SHA-256 checksum
How to use checksums
0c4fc2f71c3e4e68461868dc954d83101496946738700982c5aa7dd43b3e4c33
BLAKE2b-256 checksum
How to use checksums
786664fe9de112d61240a97d820ecac50a6b43f5e58159d424ebad4063f97b84
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Release files / utim_cli-2.3.20-py3-none-any.whl

Download URL utim_cli-2.3.20-py3-none-any.whl
Size 1.1 MB
Tags Python 3
SHA-256 checksum
How to use checksums
7ed2c9b53937b7e6ef72fcd61d504dc5a4febe72fb7c2560e7868c14c8b5fa78
BLAKE2b-256 checksum
How to use checksums
308e387b61b3efab36a4f27ff572a1f4964af1891db5dfc12e46d6f095dad6b0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Release history Release notifications | RSS feed

2.4.2

2 release files

2.4.1

2 release files

2.4.0

2 release files

This release

2.3.20 This release

2 release files

2.3.17

2 release files

2.3.16

2 release files

2.3.15

2 release files

2.3.14

2 release files

2.3.13

2 release files

2.3.12

2 release files

2.3.8

2 release files

2.3.7

2 release files

2.3.6

2 release files

2.3.5

2 release files

2.3.4

2 release files

2.3.3

2 release files

2.3.2

2 release files

2.3.1

2 release files

2.3.0

2 release files

2.2.3

2 release files

2.2.2

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.3

2 release files

2.1.2

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.4

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.48.5

2 release files

1.48.4

2 release files

1.48.3

2 release files

1.48.2

2 release files

1.48.1

2 release files

1.48.0

2 release files

1.47.9

2 release files

1.47.8

2 release files

1.47.7

2 release files

1.47.6

2 release files

1.47.4

2 release files

1.47.2

2 release files

1.47.1

2 release files

1.47.0

2 release files

1.43.9

2 release files

1.43.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page