Stem is a Git-native, file-based documentation system for software developers. It keeps reusable knowledge in Markdown blocks and lets teams compose those blocks into multiple view files without duplicating content.
Stem is designed for teams working with AI coding agents and LLM workflows: the block store and dynamic connection graph provide structured, queryable context while keeping every source file plain Markdown in Git.
Software documentation gets stale, duplicated, bloated, and locked into a single perspective. Stem separates canonical content from the views people read, so one block can power onboarding, backend, frontend, architecture, and AI-agent context views.
Stem is composed of two main packages:
@stemdev/cli: The core command-line interface for creating, managing, and rendering Stem projects.vscode-stem: The official VS Code extension providing live, side-by-side previews of your composed Markdown views.
(We recommend installing both! See their respective READMEs for installation and usage instructions.)
The CLI is intentionally thin. All business logic belongs in src/core/, and the public core API is exported from src/index.ts so future MCP servers, editor tools, and UI clients can import Stem without depending on CLI code.
Rendered Markdown is generated under rendered/ by default and should not be committed unless a project intentionally publishes generated output.
To view the full Layer Model, strict dependency rules, and single-responsibility guidelines for the core modules, please read ARCHITECTURE.md.
We welcome contributions! To build the project locally:
pnpm install
pnpm buildPlease feel free to open issues or submit pull requests on our GitHub Repository. You can find details about the release process in CONTRIBUTING.md.