Skip to main content

Arclith

Python 3.13 framework for building microservices with Hexagonal Architecture and Clean Architecture.

Arclith provides reusable domain models, use cases, repositories, adapters, FastAPI/FastMCP/LangGraph bootstrap, configuration, probes, and service wiring.

Canonical Service Layout

Arclith applications should use a namespaced src/<package>/... layout. This keeps imports explicit, avoids top-level package collisions, and matches how the project is built and tested.

src/my_service/
  domain/
  application/
  adapters/
  infrastructure/
config/
tests/
main.py

The current convention is exposed by the framework:

from arclith import canonical_project_layout

layout = canonical_project_layout("my_service")
print(layout.domain)  # src/my_service/domain

Project Links

Installation

pip install arclith

Quickstart

Pour créer un projet concret avec la CLI, lancer API/MCP/probes, puis faire évoluer les adapters :

Pour poser uniquement le cœur métier minimal après création d'un projet :

arclith-cli init todo-list-service
cd todo-list-service
arclith-cli add-entity ShoppingItem
arclith-cli add-usecase PlanShoppingList

Ces commandes ne génèrent pas de CRUD ni de wiring adapter par défaut.

Optional dependencies

pip install "arclith[mongodb]"
pip install "arclith[duckdb]"
pip install "arclith[mariadb]"
pip install "arclith[fastapi]"
pip install "arclith[mcp]"
pip install "arclith[langgraph]"
pip install "arclith[opentelemetry]"
pip install "arclith[all]"

Pour ajouter LangGraph, LangSmith et OpenTelemetry à un projet généré:

uv add "arclith[langgraph]"
uv add "arclith[opentelemetry]"
arclith-cli add-adapter --capability agent --adapter langgraph
arclith-cli add-adapter --capability observability --adapter langsmith
arclith-cli add-adapter --capability observability --adapter opentelemetry
uv run langgraph dev --no-browser --allow-blocking --port 2024

Arclith génère langgraph.json, le point d'entrée LangGraph et le câblage Arclith.langgraph(...). Le code spécifique du projet reste dans src/<package>/adapters/inbound/langgraph/agent.py. LangSmith et OpenTelemetry sont ajoutés dans observability.enabled et peuvent être actifs en parallèle.

Development

uv sync
uv run pytest

License

Apache 2.0 — see LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

arclith-0.14.0.tar.gz (382.0 kB view details)

Uploaded Source

Built Distribution

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

arclith-0.14.0-py3-none-any.whl (86.8 kB view details)

Uploaded Python 3

File details

Details for the file arclith-0.14.0.tar.gz.

File metadata

  • Download URL: arclith-0.14.0.tar.gz
  • Upload date:
  • Size: 382.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.2 {"installer":{"name":"uv","version":"0.12.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for arclith-0.14.0.tar.gz
Algorithm Hash digest
SHA256 ca8427283a5e2e705793a85c9e6d3cc69191d3e0f8a11be27b5df5e2d1076e67
MD5 e2e9f025c4160d33f68b0459e378b45d
BLAKE2b-256 1ed763b301d05315b4efae377c4eb6dad07d4acc3b28515ff4078d0d79485699

See more details on using hashes here.

File details

Details for the file arclith-0.14.0-py3-none-any.whl.

File metadata

  • Download URL: arclith-0.14.0-py3-none-any.whl
  • Upload date:
  • Size: 86.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.2 {"installer":{"name":"uv","version":"0.12.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for arclith-0.14.0-py3-none-any.whl
Algorithm Hash digest
SHA256 82fbffaca82a3b84d9a170c1006560570c8d4b2a44f6905b97634480d121ab66
MD5 c6dd2e44e88c00ac023312be3f991edc
BLAKE2b-256 addbe3bfa4c7f7e3394e1cc146589abb81dd4e27864651b6de7e2d5d59a21639

See more details on using hashes here.

Release history Release notifications | RSS feed

0.24.0

2 files

0.23.0

2 files

0.22.0

2 files

0.21.0

2 files

0.20.0

2 files

0.19.0

2 files

0.18.0

2 files

0.17.0

2 files

0.16.0

2 files

0.15.0

2 files

This release

0.14.0 This release

2 files

0.13.0

2 files

0.12.0

2 files

0.11.0

2 files

0.10.0

2 files

0.9.0

2 files

0.8.2

2 files

0.8.1

2 files

0.8.0

2 files

0.7.1

2 files

0.7.0

2 files

0.6.1

2 files

0.6.0

2 files

0.5.0

2 files

0.4.0

2 files

0.3.0

2 files

0.2.0

2 files

0.1.0

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