Skip to main content

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

Development Setup

Prerequisites

  • Python 3.12+
  • uv for Python
  • Node 18+ and bun for TypeScript
  • API keys for demos: OPENAI_API_KEY and/or ANTHROPIC_API_KEY

Python (from repo root)

Editable install is default with uv sync when developing from source.

TypeScript

Environment Variables

Create a .env file in the repo root (or in icrl-ts/ for TS demos):
For Vertex AI usage: GOOGLE_APPLICATION_CREDENTIALS, VERTEXAI_PROJECT, VERTEXAI_LOCATION.

Running Tests

Python

TypeScript

Linting and Formatting

Python

Uses ruff for linting and formatting:

TypeScript

Submitting Changes

  1. Fork the repository and create a branch from main.
  2. Make changes with clear commits. Follow existing style (ruff for Python, project conventions for TS).
  3. Run tests before submitting. Ensure uv run python tests/test_with_mock.py and uv run --with pytest python -m pytest tests/ pass for Python changes.
  4. Open a pull request against main. Describe the change and link any related issues.

Documentation

Docs live in docs/ and use Mintlify. To preview locally: