Project Structure
icrl
pyproject.toml
uv.lock
README.md
docs
api-reference
core-concepts
examples
guides
src
icrl
cli
providers
harbor
validators
examples
codebase_patterns_demo
exception_handling_demo
it_support_demo
preference_learning_demo
tests
icrl-ts
src
providers
adapters
examples
tests
web-example
convex
src
web-landing
src
Key Directories
| Path | Purpose |
|---|---|
src/icrl/ | Python package: Agent, database, loop, retriever, curation |
src/icrl/cli/ | CLI entrypoints, TUI, tools, providers |
examples/ | Python demos (file system, Harbor, domain demos) |
tests/ | Python tests and walkthroughs |
icrl-ts/ | TypeScript package and web apps |
icrl-ts/src/ | TS library: Agent, database, loop, providers |
icrl-ts/web-example/ | Next.js + Convex demo app |
icrl-ts/web-landing/ | Marketing/landing site |
docs/ | Mintlify documentation |
Development Setup
Prerequisites
- Python 3.12+
- uv for Python
- Node 18+ and bun for TypeScript
- API keys for demos:
OPENAI_API_KEYand/orANTHROPIC_API_KEY
Python (from repo root)
uv sync when developing from source.
TypeScript
Environment Variables
Create a.env file in the repo root (or in icrl-ts/ for TS demos):
GOOGLE_APPLICATION_CREDENTIALS, VERTEXAI_PROJECT, VERTEXAI_LOCATION.
Running Tests
Python
TypeScript
Linting and Formatting
Python
Uses ruff for linting and formatting:TypeScript
Submitting Changes
- Fork the repository and create a branch from
main. - Make changes with clear commits. Follow existing style (ruff for Python, project conventions for TS).
- Run tests before submitting. Ensure
uv run python tests/test_with_mock.pyanduv run --with pytest python -m pytest tests/pass for Python changes. - Open a pull request against
main. Describe the change and link any related issues.
Documentation
Docs live indocs/ and use Mintlify. To preview locally:

