Sign inSign up

n8500x/aider-chat

By n8500x

Updated 5 months ago

Offline/air-gapped aider AI coding-assistant CLI (Python 3.12) with a full dev toolbelt

Image
0

1.7K

n8500x/aider-chat repository overview

aider-chat

A self-contained, offline-friendly aider coding-assistant image with a batteries-included CLI toolbelt.

This image bundles aider-chat alongside a full developer environment (git, ripgrep, fzf, node/npm, and CLI agents like Claude Code and Codex). It is pre-configured for air-gapped / on-prem model serving: telemetry and update checks are disabled, TLS verification is turned off for use behind intercepting proxies, and aider's model-info cache is pre-seeded so it never phones home to GitHub or Hugging Face.

Quick start

docker pull n8500x/aider-chat

Run aider against a local repo, pointing it at an on-prem model endpoint:

docker run -it --rm \
  -v "$PWD":/workspace \
  -e OPENAI_API_BASE=http://your-vllm-host:8000/v1 \
  -e OPENAI_API_KEY=dummy \
  n8500x/aider-chat --model openai/your-model-name

The default CMD is --help, so docker run --rm n8500x/aider-chat prints aider's usage. The working directory inside the container is /workspace — mount your project there.

What's inside

  • Base image: python:3.12-slim
  • Main tool: aider-chat (installed via pip; no [browser] extra — Playwright is intentionally excluded)
  • Runs as a non-root user aider (uid/gid 1000) with HOME=/home/aider
  • Python tooling: pre-commit, ipython, httpie, yq
  • Node CLI agents (global npm): @anthropic-ai/claude-code, @openai/codex
  • System utilities: git, git-lfs, openssh-client, curl, wget, jq, ripgrep, fd-find, fzf, bat, tree, tmux, make, build-essential, shellcheck, vim, nano, nodejs, npm
  • Pre-seeded aider caches: litellm's bundled cost/context-window map is copied into aider's cache and a default ~/.aider.model.settings.yml is written for hosted_vllm/ and openai/ models (edit format whole, repo-map disabled) to keep prompts simple for local LLMs.
  • Entrypoint wrapper (aider-entrypoint) sets up $HOME, refreshes cache timestamps, disables the Hugging Face tokenizer download, and then execs aider.

Configuration

Environment variables (set in the image)
VariableValuePurpose
AIDER_AUTO_COMMITSfalseDisable automatic git commits
AIDER_DARK_MODEtrueDark terminal theme
AIDER_CHECK_UPDATEfalseNo update checks
AIDER_SHOW_RELEASE_NOTESfalseSuppress release notes
AIDER_ANALYTICS / AIDER_ANALYTICS_DISABLEfalse / trueDisable analytics / phone-home
AIDER_DISABLE_PLAYWRIGHTtrueNo headless-browser scraping
AIDER_EDIT_FORMATwholeWhole-file edits (better for local LLMs)
AIDER_MAP_TOKENS0Disable repo map
AIDER_CHAT_HISTORY_FILE/home/aider/.aider/chat-history.mdChat history location
AIDER_INPUT_HISTORY_FILE/home/aider/.aider/input-history.mdInput history location
AIDER_DOCKER_IMAGEn8500x/aider-chatImage self-identifier
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC1Disable Claude Code telemetry
NO_UPDATE_NOTIFIER / NPM_CONFIG_UPDATE_NOTIFIER1 / falseNo node/npm update checks
LITELLM_LOCAL_MODEL_COST_MAPtrueUse bundled cost map, no download
HF_HUB_OFFLINE / TRANSFORMERS_OFFLINE1Skip Hugging Face downloads
EDITORvimDefault editor
TLS verification disabled

For use behind intercepting corporate proxies, certificate verification is turned off across the toolchain via: PYTHONHTTPSVERIFY=0, CURL_CA_BUNDLE="", GIT_SSL_NO_VERIFY=true, NODE_TLS_REJECT_UNAUTHORIZED=0, NPM_CONFIG_STRICT_SSL=false, REQUESTS_CA_BUNDLE="", SSL_CERT_FILE="", SSL_VERIFY=false, AIDER_NO_VERIFY_SSL=true, OPENAI_API_SSL_VERIFY=false, plus PIP_TRUSTED_HOST for the PyPI hosts.

Ports & volumes
  • Port: EXPOSE 8501 is declared.
  • Volume / workdir: mount your project at /workspace (the container's WORKDIR).
Build args
ArgDefaultPurpose
USERNAMEaiderNon-root user name
USER_UID1000User id
USER_GID1000Group id
HTTP_PROXY / HTTPS_PROXY / NO_PROXY(unset)Build-time proxy support
DEBIAN_FRONTENDnoninteractiveapt non-interactive install

Build

docker build -t n8500x/aider-chat aider-chat/

Behind a proxy, pass proxy build args:

docker build \
  --build-arg HTTP_PROXY=http://proxy:8080 \
  --build-arg HTTPS_PROXY=http://proxy:8080 \
  --build-arg NO_PROXY=localhost,127.0.0.1 \
  -t n8500x/aider-chat aider-chat/

Notes

  • Air-gapped / on-prem by design. aider's model-info cache is pre-seeded from litellm's bundled model_prices_and_context_window_backup.json, HF_HUB_OFFLINE/TRANSFORMERS_OFFLINE are set, and the entrypoint disables the litellm Hugging Face tokenizer download — so aider never fetches model data from GitHub or Hugging Face at runtime.
  • The default model settings target hosted_vllm/ and openai/ model prefixes with whole-file edits and no repo map, tuned for smaller local LLMs.
  • TLS verification is globally disabled to work through TLS-intercepting proxies. This is a deliberate trade-off for locked-down/air-gapped networks — do not use this image where certificate validation is required for security.
  • Playwright is intentionally excluded (no [browser] extra); aider's web-scraping features that require a headless browser are unavailable.

Tag summary

Content type

Image

Digest

sha256:a5e93ac3d

Size

653 MB

Last updated

5 months ago

docker pull n8500x/aider-chat