Home
What is concierge?¶
concierge is a Python hands-on repository for building LLM applications on
Microsoft Foundry using
LangChain and
LangGraph. It
ships with two complementary surfaces:
| Surface | Runs entirely local? | What you learn |
|---|---|---|
| Todo App (Clean Architecture) | yes | A small FastAPI + Typer + clean-architecture reference |
| Hands-on Tutorial | partly | Foundry chat / embeddings, observability, pgvector, a LangGraph agent |
Service modules & dependencies¶
The Python source under
concierge/
is split into small per-feature packages. Each one follows the same
clean-architecture layout (domain / application / infrastructure)
and is wired together through a shared concierge.settings
configuration layer.
| Package | Role | Surfaces | Depends on (concierge) |
|---|---|---|---|
settings |
Pydantic-Settings config with per-service namespaces (Foundry, Postgres, observability, ...) | — | — |
loggers, observability |
Shared logging + Foundry / Azure Monitor / MLflow tracing helpers | — | settings |
todo |
Task CRUD reference application | REST API, CLI | settings |
knowledge |
Markdown ingest + pgvector RAG store | CLI | settings |
agents |
Shared agent runtime — AgentRegistry, adapters (Echo / GitHub Copilot SDK / LangGraph / Microsoft Agent Framework) and built-in tools (echo, file management, shell command, image generation) |
CLI | settings |
chat |
Chat conversations and replies (synchronous + realtime voice) | REST API, CLI, Realtime | settings, agents (optional, agent-backed responder) |
cloud_agent |
Async task dispatcher that runs agent jobs through a queue + repository | REST API, CLI | settings, agents |
The dependency direction is strictly one-way:
agents,todo, andknowledgeare independent bounded contexts — nothing in them imports another service package.chatandcloud_agentare the only services that importagents, and they do so at the infrastructure / application boundary, never from their domain layer.- These rules are enforced in CI by
import-lintercontracts declared inpyproject.toml(run locally withmake lint-imports).
flowchart LR
settings[settings]
obs["loggers / observability"]
agents[agents]
todo[todo]
knowledge[knowledge]
chat[chat]
cloud_agent[cloud_agent]
obs --> settings
todo --> settings
knowledge --> settings
agents --> settings
chat --> settings
cloud_agent --> settings
chat --> agents
cloud_agent --> agents
Note
The tutorial CLI
scripts/langgraph/vanilla.py
drives the Todo app over the public REST API via httpx — it does
not import concierge.todo directly. Treat that as a runtime
integration only.
Where do I start?¶
Pick the closest match to your goal. Each path links forward into the next so you can keep going as far as you want.
Start with the Todo App overview. It boots with one
command (uv run todo-web), needs no Azure credentials, and shows how
the FastAPI / Typer / repository layers fit together.
Jump to Step 1 - Microsoft Foundry + LangChain. You will run a chat completion against your Foundry project from a Typer CLI in under five minutes.
Read Step 2 - Observability (Tracing & MLflow). It shows how to send LangChain runs to Azure Monitor and how to view them locally in the MLflow UI - screenshots included.
Read Monitor VS Code Copilot via App Insights. A bundled OTel Collector forwards Copilot Chat operations, tokens, tool calls, and per-model latency to Azure Application Insights — queryable from the portal and the prebuilt Grafana dashboard at aka.ms/amg/dash/gh-copilot.
Read Step 3 - PostgreSQL (pgvector) CRUD. One Typer CLI runs against either Docker Compose pgvector or Azure Database for PostgreSQL Flexible Server.
Read Step 4 - LangGraph Todo Agent CLI. The LangGraph agent talks to the Todo Web API through tools and combines everything from steps 1-3.
Quick reference¶
- Development Guide - environment setup,
maketargets, Docker workflow. - Tutorial Overview - the recommended end-to-end reading order.
- Appendix - External references - every Microsoft Learn / upstream link in one place.