DSH Plugin Store
Back to home

sopaco

terrain

AI-native engineering environment management that makes your codebase agent-ready.

Stars
1
Language
Rust
Created
Jun 14, 2026
Updated
Aug 14, 2026
Other
GitHub repo

Introduction

Terrain

Terrain prepares the ground so agents don't have to guess where to stand.

Engineering environment management for human developers and AI coding assistants — knowledge as the map, tools as the roads, conventions as the trail markers.

License: MIT


What is Terrain?

Terrain is a standardized, AI-friendly engineering environment built for the age of AI-assisted development. Point it at a Git repository and it delivers three things:

  • 🗺️ Engineering knowledge — auto-generated, always-in-sync C4 docs and agent context, produced from your code and consumed by both humans and AI agents.
  • 🤝 A standardized environment for AI agents — one shared "knowledge contract" (Skills, AGENTS.md, CLIs) so every coding agent reads the project the same way instead of blind-grepping the live repo.
  • ⚙️ Auto-deployed agent enhancement tools — one command installs the toolchain your agents need (CodeGraph, RTK, preset Skills); no per-repo yak-shaving.

Knowledge lives in the repository — not in a central database. Every branch carries its own docs. Human developers use the Tauri desktop app or CLI; external AI coding assistants (Claude Code, Codex, OpenCode, Cursor, …) call terrain tools over ACP to read the same knowledge layers.

App preview

Project overviewEngineering knowledgeDeepWiki Q&AAgent environment
imageAuto-generated C4 architecture docsKnowledge-grounded Q&A with citationsOne-command agent tooling setup

From left to right: project list with freshness scores, auto-generated C4 docs, knowledge-grounded Q&A, and one-command agent tooling setup.

Three pillars at a glance

PillarMetaphorWhat you get
Engineering knowledge assetsMapDual-track docs in .terrain/produced from code, consumed by humans and agents
Standardized AI environmentRoadsSkills, CLIs, and AGENTS.md that route agents to the right knowledge and tools
Agent enhancement toolsGearOne-command deployment of CodeGraph, RTK, and preset Skills

Dual-track knowledge

AudiencePathFormat
Humans.terrain/human/Narrative C4 docs with Mermaid diagrams
AI agents.terrain/agent/context.mdStructured architecture overview (≤ 14 KiB)
Source index.terrain/agent/repomix.mdRepomix pack — grep/read on demand, not preloaded
Domain terms.terrain/knowledge/Business glossary and internal conventions

Knowledge factory


Why Terrain?

Onboarding to a new codebase usually means days of reading source and stale wiki pages. Terrain compresses that to minutes: register a repo, run initialization, and get a full C4 doc set plus an agent-ready context pack.

Without TerrainWith Terrain
Architecture knowledge scattered across wikis, Slack, and senior engineersEngineering knowledge assets generated from the actual codebase
AI assistants grep the live repo blindlyAgents read context.md first, then targeted repomix slices
Docs drift from code on every refactorIncremental updates + freshness tracking; knowledge travels with Git branches
Every team reinvents "how to onboard an AI to our repo"Env integration installs Skills, CodeGraph, RTK, and AGENTS.md snippets

Built for:

  • Developers exploring or documenting a codebase
  • Tech leads who want architecture docs that stay close to the code
  • Teams adopting AI coding assistants and need a shared knowledge contract
  • CI/CD pipelines that regenerate knowledge assets on merge
  • ACP integrators wiring terrain tools into Claude Code, Codex, OpenCode, or compatible agents

From Litho (deepwiki-rs) to Terrain

Terrain's knowledge engine is the direct successor of Litho, the AI documentation generator published as deepwiki-rs (1.7k★). Litho proved the core thesis at scale — generate architecture docs from code, keep them in sync, make them agent-ready. Terrain takes that successful practice and hardens it into a platform:

  • Incremental knowledge-base updates. Instead of regenerating from scratch, Terrain tracks Git HEAD and working-tree state and updates only what changed, so the knowledge base stays fresh on every commit without the full cost (freshness scoring + resumable pipelines).
  • Broad language & framework adaptation. The generation core is language-agnostic and tuned for Rust, TypeScript/JavaScript, Python, Go, Java, C#, and more, with framework-aware structure extraction.
  • ACP mode for your agents. Terrain speaks the Agent Client Protocol, so Claude Code, Codex, OpenCode, and Cursor can pull project knowledge through terrain tools instead of guessing.
  • Litho Book, built in. The original Litho Book Markdown reader and its knowledge-grounded Q&A are now integrated into the Terrain desktop app — browse and ask in one place.

In short: if you liked Litho for docs, Terrain is Litho's knowledge core plus the environment, workflow, and agent bridge around it.


Features & Capabilities

1. Engineering knowledge assets — generate & consume

Terrain turns a codebase into a dual-track knowledge base that both people and agents use. Born from Litho (deepwiki-rs, 1.7k★), it keeps the proven doc-generation core and adds incremental, multi-language, agent-connected delivery.

  • Generate — a four-phase pipeline produces six standard human docs (overview, architecture, workflows, deep module exploration, boundary interfaces, database overview) plus a structured agent/context.md and a grep-friendly repomix.md source pack.
  • Consume — DeepWiki answers natural-language questions over the knowledge base with citations and tool-call traces; external agents consume the same three layers through terrain tools.
  • Stay fresh — incremental regeneration on code change and a freshness score that flags stale assets.
  • Read & ask in one place — the integrated Litho Book reader and Q&A (formerly a separate tool) now live inside the desktop app.

The same Litho success story, now incremental, multi-language, and wired to your agents.

2. Standardized, AI-friendly engineering environment

A shared "knowledge contract" so every coding agent reads your repo the same way:

  • AGENTS.md — managed snippets that point agents to the knowledge layers first.
  • Preset Skills — standard playbooks (terrain-knowledge → repomix → codegraph → rtk) your agents can load.
  • Conventions as trail markers — consistent workflow and access patterns across repositories.

3. Auto-deployed agent enhancement tools

One command wires up the toolchain your agents need — no per-repo setup:

  • CodeGraph — symbol callers/callees/impact queries via bunx codegraph.
  • RTK — shell-output token optimizer that saves agents tokens.
  • Terrain CLI / terrain tools — scan, assets, and ACP access.
  • terrain env apply installs Skills, CLIs, and AGENTS.md in the right dependency order (terrain-knowledgerepomixcodegraphrtk).

4. SDD — standardized development workflow

Four sequential phases, each producing a reviewable Markdown artifact:

PhaseOutputExecution
1. Requirements1.requirements.mdNative LLM
2. Technical design2.tech-design.mdNative LLM
3. Code generation3.implementation.md + repo changesACP agent
4. Code review4.code-review.mdNative LLM

Session outputs live under ~/.terrain/sdd/{project}/sessions/{id}/outputs/ (local, not versioned).

5. Freshness tracking

Git HEAD and dirty-state monitoring score knowledge assets. Agents should down-weight context when freshness_score < 50.


Architecture

Terrain is an agent-first engineering environment platform. For each Git repository it delivers three coordinated solutions:

PillarMetaphorWhat agents get
Engineering knowledge assetsMapStructured assets in .terrain/produced from code, consumed through layered access
Standardized AI environmentRoadsSkills, CLIs, and AGENTS.md that route agents to the right knowledge and tools
Development workflow (SDD)Trail markersA four-phase convention from requirements through code review

Knowledge as the map, tools as the roads, conventions as the trail markers.

Humans use the desktop app or CLI; external coding agents (Claude Code, Codex, OpenCode, …) use the same contract via terrain tools (JSON stdout). Assets live in-repo (.terrain/ travels with branches); ~/.terrain/registry.json holds project pointers only.

System overview

graph TB
    subgraph Actors
        Dev[Developer]
        ExtAgent[External coding agent]
    end

    subgraph Terrain["Terrain"]
        K["Engineering knowledge assets<br/>produce · consume"]
        E["Standardized AI environment<br/>skills · tools · AGENTS.md"]
        W["Workflow<br/>SDD"]
    end

    subgraph Output
        DotTerrain[".terrain/"]
        EnvDot[".agents/ · AGENTS.md"]
        SddDir["~/.terrain/sdd/"]
    end

    subgraph External
        Git[Git repo]
        LLM[LLM API]
        ACP[ACP agent]
    end

    Dev --> K
    Dev --> E
    Dev --> W
    ExtAgent --> K
    ExtAgent --> E
    K --> DotTerrain
    E --> EnvDot
    W --> SddDir
    K --> Git
    K --> LLM
    W --> ACP
    W --> LLM

① Engineering knowledge assets — the map

Dual-track assets from one factory — narrative human/ for people, structured agent/ for machines:

.terrain/
├── agent/context.md    macro overview
├── agent/repomix.md    grep-friendly source pack
├── human/              engineering knowledge docs (from Litho)
├── knowledge/          domain glossary
└── .meta/freshness.json

Produce (scan/pack are offline; LLM/ACP where noted):

Git ──scan──► index.md
    ──pack──► repomix.md
    ──context (LLM)──► context.md
    ──docs (ACP)──► human/ + .litho-agent/ checkpoints
    ──track──► freshness.json

Consume — DeepWiki and terrain tools share the same three layers:

LayerSourceAPI
Macroagent/context.mdread-context
Mesohuman/, knowledge/search, read-doc
Microagent/repomix.mdgrep-packread-pack-file

When sources conflict: repomix > CodeGraph > context.md > human/. Down-weight macro context when freshness_score < 50.

② Standardized AI environment — the roads

terrain env apply installs the navigation layer so agents don't improvise:

ComponentPurpose
SkillsStandard playbooks — terrain-knowledge → repomix → codegraph → rtk
Tools~/.terrain/bin/ — CodeGraph, RTK, terrain CLI (terrain tools for ACP)
AGENTS.mdManaged snippets — knowledge-first workflow, repomix for code, RTK for shell

③ Development workflow — the trail markers

SDD defines a repeatable path; each phase produces a reviewable Markdown artifact:

PhaseOutputEngine
Requirements1.requirements.mdNative LLM
Tech design2.tech-design.mdNative LLM
Codegen3.implementation.md + repo changesACP agent
Code review4.code-review.mdNative LLM

The knowledge pipeline uses the same resumable pattern — research checkpoints under .terrain/.litho-agent/.

Runtime

graph LR
    Chan[Desktop · CLI] --> Intel[terrain-agent]
    Chan --> Core[terrain-core]
    Intel --> Core
    Intel --> LLM[LLM]
    Intel --> ACP[ACP]
    Core --> FS[".terrain/ · Git · registry"]

Core handles scan, pack, search, freshness, and env without an LLM. Agent orchestrates DeepWiki, knowledge generation, SDD, and context generation — lightweight tasks via native LLM, heavy tool-using work via ACP subprocess.

.terrain/ directory (per project)

{your-repo}/.terrain/
├── index.md                 # Project index (from scan)
├── agent/
│   ├── context.md           # Macro architecture context for agents
│   ├── repomix.md           # Source pack (generated, often gitignored)
│   └── meta.json            # Pack metadata
├── human/                   # Engineering knowledge docs (1.概述.md, 2.架构.md, …)
├── knowledge/               # Domain glossary and conventions
├── .meta/
│   ├── sync.json            # Scan sync state
│   └── freshness.json       # Asset freshness scores
└── .litho-agent/            # Litho/knowledge research workspace (transient)

Project registration (slug ↔ repo path) is stored locally at ~/.terrain/registry.json — pointers only, not knowledge files.


Ecosystem

Terrain composes with the tools your AI workflow already uses:

ComponentRole
Claude Code / Codex / OpenCode / ACP agentsExecute knowledge composition, SDD codegen, and tool calls in an isolated process
RepomixPacks source into a grep-friendly index for agents
CodeGraphSymbol callers/callees/impact queries via bunx codegraph
RTKCompresses shell output to save tokens (@terrain-ai/rtk on npm, or ~/.terrain/bin/rtk)
Terrain CLIScan, assets, terrain tools for ACP (@terrain-ai/cli on npm, or ~/.terrain/bin/terrain)
Preset SkillsLLM workflow instructions in preset_skills/ (knowledge, SDD, Ask, Context)
DeepWiki / Litho BookKnowledge-grounded Q&A and Markdown reader, integrated in the desktop UI

Trust model for coding agents: when sources conflict, repomix source > codegraph > context.md > human docs.


Getting Started

Prerequisites

  • Rust 1.94+ (rust-toolchain.toml pins the version)
  • Bun — Node toolchain for frontend and optional tools
  • LLM access (optional) — OpenAI-compatible API, Ollama, or LM Studio (configure in the desktop app Settings panel)
  • Mainstream coding agent — e.g. Codex, DeepSeek Harness, or Claude Code, for knowledge composition and SDD codegen

Build from source

# Clone and install frontend dependencies
git clone https://github.com/sopaco/terrain.git
cd terrain
bun install

# Build Rust workspace (CLI + libraries)
cargo build --release

# CLI binary
./target/release/terrain --help

# Desktop app (development)
bun run dev:app

License

MIT — see LICENSE.