Build LLM-ready context documents from source repositories
Project description
Arian
Your documentation is a direct reflection of your software, so hold it to the same standards.
Arian generates LLM-optimized context from source code repositories. Instead of dumping raw files, it intelligently selects, compresses, and organizes code so that language models get the most relevant information — within token limits.
Status: Alpha — Core architecture is established. APIs, CLI, and output may evolve.
Highlights
- Task-aware — File selection and compression adapt to what you're doing (bug fix, feature, review, onboarding...)
- Token-budget-first — Set a limit, Arian respects it. Never exceeds your budget
- Smart compression — Large files get compressed to signatures or structure outlines automatically
- Python deep analysis — Extracts classes, functions, methods via AST for precise fragmentation
- One command —
arianscans your repo and produces a single, organized Markdown context file - Flexible output — Merged, separate, or grouped context files per directory
Overview
Arian does not concatenate files. It builds a structured context plan: collects files, classifies them by architectural role, analyzes symbols, applies compression, and renders Markdown optimized for LLM workflows.
# Generate context for a bug fix
arian src/ tests/ --task bug_fix
# Onboard to a new project
arian --task onboarding
# Set a token budget
arian src/ --budget 5000
Output goes to ~/.arian/output/context.md by default. Each file contains a YAML manifest, full directory tree, and syntax-highlighted code blocks organized by importance.
✍️ Author
Created by Salim Namvar. Built out of the need to feed LLMs the right code context — not just all the code.
Usage
Quick examples
# Current directory
arian
# Specific paths with a task
arian src/ lib/ --task feature
# Token budget
arian src/ --budget 10000
# Separate output per directory
arian src/ lib/ --scope separate
# Grouped output
arian --group src/,lib/ --group tests/
# Verbose logging
arian src/ --verbose
Task types
| Task | What gets prioritized |
|---|---|
bug_fix |
Tests, implementation, dependencies |
feature |
Domain logic, services, test coverage |
review |
Services, domain logic |
onboarding |
README, configuration, entry points |
refactor |
Services, infrastructure |
document |
README, domain, services |
general |
No special prioritization (default) |
CLI options
arian [OPTIONS] [paths]...
| Option | Default | Description |
|---|---|---|
--task |
general |
Task type driving file priorities |
--budget |
Unlimited | Maximum tokens for context |
--output, -o |
~/.arian/output/context.md |
Output file path |
--scope |
merged |
merged or separate |
--group |
— | Group paths (repeatable) |
--verbose, -v |
Off | Debug logging |
For detailed usage, see docs/USAGE.md.
Installation
pip install arian
Requires Python 3.10+.
From source (development)
git clone https://github.com/salimnamvar/arian.git
cd arian
pip install -e ".[dev]"
Development instructions are kept to a minimum here. See docs/developer/GITFLOW.md for the full development workflow.
How it works
- Collect — Scans repository for files matching configured extensions
- Classify — Assigns each file an architectural role (readme, test, domain, service, infrastructure...)
- Analyze — Extracts symbols from Python via AST (other languages get role-based classification)
- Plan — Ranks files by relevance to the task, applies compression, enforces token budgets
- Materialize — Loads content, applies compression (full → signatures → structure → summary), fragments large files along symbol boundaries
- Render — Produces Markdown with manifest, directory tree, and syntax-highlighted code
Compression levels
| Level | When | What it keeps |
|---|---|---|
| Full | Small, high-priority files | Complete content |
| Signatures | Medium files | Class/function signatures and docstrings |
| Structure | Large files (>5000 tokens) | File structure outline |
| Summary | Very large files | Brief summary only |
Feedback and Contributing
Contributions are welcome! Open an issue or submit a pull request at the source repository.
For development setup and workflow, see docs/developer/GITFLOW.md.
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file arian-0.6.3.tar.gz.
File metadata
- Download URL: arian-0.6.3.tar.gz
- Upload date:
- Size: 63.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4cd15b09a0f2743295c05369016252b957fe56afbc2f93545e9f966657d9ccae
|
|
| MD5 |
c728b9ed449373a6d1d844b143dfbe0b
|
|
| BLAKE2b-256 |
321208fef14e70af767091f7dcb89574d7a346fb4eb061d4719df31bdd7a0194
|
File details
Details for the file arian-0.6.3-py3-none-any.whl.
File metadata
- Download URL: arian-0.6.3-py3-none-any.whl
- Upload date:
- Size: 80.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6b1b48153073647a4c3ea5b723705bb0e774fe7c27662f2471013046c6b04d7d
|
|
| MD5 |
2e578f27596d8b38588271af9343490b
|
|
| BLAKE2b-256 |
6ba7cb8b44f2bd047041f84aca32b7faf7ce5cffd8f86452e59a8c0703ff34c6
|