Skip to main content

LansCoder

A local coding agent you can read end to end.

Python 3.11+ MIT License

LansCoder TUI screenshot

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.

~30,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 — ~30k 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 — 40+ 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.

Quick start

pipx install lanscoder
lanscoder config init

Edit the config file with your API key:

  • macOS / Linux: ~/.config/lanscoder/config.toml
  • Windows: C:\Users\<username>\.config\lanscoder\config.toml

Example config:

default_model = "openai/gpt-4o"

[providers.openai]
type = "openai-compatible"
base_url = "https://api.openai.com/v1"
api_key = "sk-xxx"
api_key_env = "OPENAI_API_KEY"

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, 40+ built-in tools
Multi-model OpenAI-compatible and Anthropic providers, hot-switchable mid-session
Permissions Standard / aggressive / bypass modes, diff preview before every mutation
TUI Textual-based terminal UI, streams reasoning, tool calls, and results in real time
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 and orchestration
├── providers/     Model provider adapters
├── tools/         Tool registration and execution (40+ tools)
├── permissions/   Policy and grant management
├── context/       Event log and context management
├── session/       Session lifecycle
├── 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

lanscoder-1.0.0.tar.gz (297.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lanscoder-1.0.0-py3-none-any.whl (388.1 kB view details)

Uploaded Python 3

File details

Details for the file lanscoder-1.0.0.tar.gz.

File metadata

  • Download URL: lanscoder-1.0.0.tar.gz
  • Upload date:
  • Size: 297.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.13

File hashes

Hashes for lanscoder-1.0.0.tar.gz
Algorithm Hash digest
SHA256 e20d6ff6bfbf9f87cd1cc0c72a7cd70853eaf28671d049b4d9a5134388932fce
MD5 66edfc8f274a2e714e9e2d4d8a256228
BLAKE2b-256 293534032572628e8755625e9f29930dc956d90d88f14a79406b57eac674fd57

See more details on using hashes here.

File details

Details for the file lanscoder-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: lanscoder-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 388.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.13

File hashes

Hashes for lanscoder-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fd82150289de87e81ef9994662c7615acd86cda18e0016d2e376aa2b435e2456
MD5 32d193a75cb5265c48349cc9e1136e46
BLAKE2b-256 eac154597c999bf3464554be1bd1b151bb630dc414c8c587450e727b8809e05f

See more details on using hashes here.

Release history Release notifications | RSS feed

1.3.0

2 files

1.2.1

2 files

1.2.0

2 files

1.1.0

2 files

1.0.1

2 files

This release

1.0.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page