LansCoder
A local coding agent you can read end to end.
What is it?
LansCoder is a locally-runnable Python coding agent. It understands your codebase, edits files, and runs shell commands — like Claude Code or Aider. But its core design goal isn't feature volume; it's understandability.
~28,000 lines of Python, clean module boundaries, solid test coverage. Real enough to use daily, small enough to read from end to end.
96.38% reward pass@1 on the Harbor Aider Polyglot benchmark.
Highlights
- Small, so you can read it — ~28k lines of Python, not 570k lines of TypeScript. Every module's job is obvious.
- Built to learn from — strict layering, clear dependency rules. Great for studying how coding agents work, for hacking on, or for interview prep.
- Actually usable — 29 built-in tools, multi-provider support, MCP integration, session persistence, context compression. Not a toy.
- Preview before you write — syntax-highlighted diffs shown before every file change, even in high-permission mode; confirmation via strict 1/2/3 input, with
reject: <feedback>for write review.
Quick start
Choose your preferred install method:
Shell (one-liner, all platforms):
curl -sSL https://raw.githubusercontent.com/Lanstzz/LansCoder/main/install.sh | bash
pipx (all platforms):
pipx install lanscoder
After installation, run lanscoder config init to generate a config file, then edit it with your API key:
- macOS / Linux:
~/.config/lanscoder/config.toml - Windows:
C:\Users\<username>\.config\lanscoder\config.toml
Example config:
default_model = "deepseek/deepseek-v4-flash"
[providers.deepseek]
type = "openai-compatible"
base_url = "https://api.deepseek.com"
api_key = "sk-xxx"
[models."deepseek/deepseek-v4-flash"]
label = "DeepSeek V4 Flash"
context_window = 1000000
[permissions]
mode = "ask"
[ui]
theme = "default"
Then launch from your project directory:
lanscoder
Development setup:
python -m venv .venv
.venv/bin/python -m pip install -e ".[dev]"
.venv/bin/python -m pytest
Features at a glance
| Capability | What it does |
|---|---|
| Coding agent | Understands code, edits files, runs shell commands, 29 built-in tools |
| Multi-model | OpenAI-compatible and Anthropic providers, hot-switchable mid-session |
| Permissions | Standard / aggressive / bypass modes, diff preview before every mutation; prompts answered with 1/2/3, reject: <feedback> on write review |
| TUI | Textual-based terminal UI; streams reasoning, tool calls, and results in real time, with nested collapsible transcript rows and per-reasoning durations |
| Sessions | Create, resume, fork, share — persisted as JSONL |
| Context compression | 4-level pipeline (L1–L4) to manage token usage in long conversations |
| Background subagents | Subagents run independently in the background, notify on completion |
| MCP integration | Connect external tool servers via Model Context Protocol |
Architecture
lanscoder/
├── app/ Textual TUI
├── agent/ Agent loop, tool execution, permission resume
├── providers/ Model provider adapters
├── tools/ Tool registration and execution (29 built-in tools)
├── permissions/ Policy, grants, and permission coordinator
├── context/ Event log and context management
├── session/ Session lifecycle
├── planning/ Task plan service and projection
├── subagent/ Background subagent types
├── input/ Attachments and clipboard
├── mcp/ MCP protocol integration
├── memory/ Cross-session persistent memory
├── skills/ Local skill discovery and loading
├── config/ TOML configuration
└── utils/ Shared utilities
Who is it for?
- Developers who want to deeply understand how coding agents work
- People looking to extend or modify a Python-based coding agent
- Anyone who needs a project they can explain architecturally for interviews or portfolios
- AI enthusiasts who want to experiment with different models locally
Contributing
Issues and PRs are welcome. Tests cover most core modules — please make sure they pass before submitting.
License
MIT
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 lanscoder-1.2.0.tar.gz.
File metadata
- Download URL: lanscoder-1.2.0.tar.gz
- Upload date:
- Size: 252.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7f21b2c988daef64f62146db8efc6c863a62e601682659a87cd45664b0fd210c
|
|
| MD5 |
88daa753d64c7459ee61cf152d3811b5
|
|
| BLAKE2b-256 |
2f8a639a72c8753bb53290779babb4b83c3226f4f42fffdf4f1928da11837328
|
File details
Details for the file lanscoder-1.2.0-py3-none-any.whl.
File metadata
- Download URL: lanscoder-1.2.0-py3-none-any.whl
- Upload date:
- Size: 337.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3c7691ff8da8f9d24b10b17c0f642ab395787e2bf9ed9fe61757dc3d781de157
|
|
| MD5 |
c05390cb0ac69c9fd77760e70691c90a
|
|
| BLAKE2b-256 |
3ace635bc2ffbb9cfa2230e70fe3b4034ef181373c9d4af20ed4c9e432879a2a
|