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.16.0.tar.gz (542.1 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.16.0-py3-none-any.whl (94.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: arclith-0.16.0.tar.gz
  • Upload date:
  • Size: 542.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","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.16.0.tar.gz
Algorithm Hash digest
SHA256 8201c8165ae01656eb6c611508ba5ec29aa358a7ddcd1e2bb5567736b06beb5b
MD5 ae948ed8522ee39f53a93e2be8df1104
BLAKE2b-256 5a2071f6c4f7f12a2ef782cd9a4c44b0286761abf584f96d5767a417e4b49387

See more details on using hashes here.

File details

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

File metadata

  • Download URL: arclith-0.16.0-py3-none-any.whl
  • Upload date:
  • Size: 94.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","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.16.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4ceef59309e30c98b1d844c7ae5e76f3896c3a9dd56cd92ae19af435fea51bf4
MD5 c06719b92ff8a6d24e9dfc80644905ec
BLAKE2b-256 b3ffd923750fac6c5175e7653bb1ee49550dd6a69c746f6fa26a3817e3cf49d9

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

This release

0.16.0 This release

2 files

0.15.0

2 files

0.14.0

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