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.15.0.tar.gz (382.5 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.15.0-py3-none-any.whl (86.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: arclith-0.15.0.tar.gz
  • Upload date:
  • Size: 382.5 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.15.0.tar.gz
Algorithm Hash digest
SHA256 8b38d5f6d9f9ff91208dd0f0e18b4c68a93c45d00c82031a8fcf885bba9f08d6
MD5 a0e214587ad5dffa2b9f8b24a4a30e45
BLAKE2b-256 5a4b5d2289a0675c05bb0603a2501ab5432d0b2be476ce13a26b2238776912ae

See more details on using hashes here.

File details

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

File metadata

  • Download URL: arclith-0.15.0-py3-none-any.whl
  • Upload date:
  • Size: 86.9 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.15.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5c1dbbab0d565fc4ac3054aca5310fbdcb88ecadd14b7994d9ec5849cdb4672f
MD5 7f554f70a25ae6f7734de9179a7fe3b3
BLAKE2b-256 710c849dba0868ff0ededae4b1e6bc0415d28aa0707019c71f043fc4722b8e8e

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

This release

0.15.0 This release

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