Skip to main content

Concierge Logo


Build Status License: MIT Python 3.10+

Concierge Agentic Web Interfaces

Expose your service to Agents

Concierge is a declerative framework that allows LLMs to interact with your applications, and navigate through complex service heirarchies. With Concierge, you can built applications for AI/LLM use exposed over the web to guide agents towards domain specific goals. (Example: Agents browsing, selecting, transcating for online shopping interface).

Quick Start

# Install dependencies
pip install -e .

# Run server
./scripts/run-server.sh

# Test with example workflow (in another terminal)
python examples/ecommerce/workflow.py

Core Concepts

Developers define workflows with explicit rules and prerequisites. You control agent autonomy by specifying legal tasks at each stage and valid transitions between stages. For example: agents cannot checkout before adding items to cart. Concierge enforces these rules, validates prerequisites before task execution, and ensures agents follow your defined path through the application.


Concierge Example


Tasks

Tasks are the smallest granularity of callable business logic. Several tasks can be defined within 1 stage. Ensuring these tasks are avialable or callable at the stage.

@task(description="Add product to shopping cart")
def add_to_cart(self, state: State, product_id: str, quantity: int) -> dict:
    """Adds item to cart and updates state"""
    cart_items = state.get("cart.items", [])
    cart_items.append({"product_id": product_id, "quantity": quantity})
    state.set("cart.items", cart_items)
    return {"success": True, "cart_size": len(cart_items)}

Stages

A stage is a logical sub-step towards a goal, Stage can have several tasks grouped together, that an agent can call at a given point.

@stage(name="product")
class ProductStage:
    @task(description="Add product to shopping cart")
    def add_to_cart(self, state: State, product_id: str, quantity: int) -> dict:
        """Adds item to cart"""
        
    @task(description="Save product to wishlist")
    def add_to_wishlist(self, state: State, product_id: str) -> dict:
        """Saves item for later"""
        

State

A state is a global context that is maintained by Concierge, parts of which can get propagated to other stages as the agent transitions and navigates through stages.

# State persists across stages and tasks
state.set("cart.items", [{"product_id": "123", "quantity": 2}])
state.set("user.email", "user@example.com")
state.set("cart.total", 99.99)

# Retrieve state values
items = state.get("cart.items", [])
user_email = state.get("user.email")

Workflow

A workflow is a logic grouping of several stages, you can define graphs of stages which represent legal moves to other stages within workflow.

@workflow(name="shopping")
class ShoppingWorkflow:
    discovery = DiscoveryStage      # Search and filter products
    product = ProductStage          # View product details
    selection = SelectionStage      # Add to cart/wishlist
    cart = CartStage                # Manage cart items
    checkout = CheckoutStage        # Complete purchase
    
    transitions = {
        discovery: [product, selection],
        product: [selection, discovery],
        selection: [cart, discovery, product],
        cart: [checkout, selection, discovery],
        checkout: []
    }

Dashboard

Concierge Workflow


Examples

Multi-Stage Workflow

@workflow(name="amazon_shopping")
class AmazonShoppingWorkflow:
    browse = BrowseStage         # Search and filter products
    select = SelectStage         # Add items to cart
    checkout = CheckoutStage     # Complete transaction
    
    transitions = {
        browse: [select],
        select: [browse, checkout],
        checkout: []
    }

Stage with Tasks

@stage(name="browse")
class BrowseStage:
    @task(description="Search for products by keyword")
    def search_products(self, state: State, query: str) -> dict:
        """Returns matching products"""
        
    @task(description="Filter products by price range")
    def filter_by_price(self, state: State, min_price: float, max_price: float) -> dict:
        """Filters current results by price"""
        
    @task(description="Sort products by rating or price")
    def sort_products(self, state: State, sort_by: str) -> dict:
        """Sorts: 'rating', 'price_low', 'price_high'"""

@stage(name="select")
class SelectStage:
    @task(description="Add product to shopping cart")
    def add_to_cart(self, state: State, product_id: str, quantity: int) -> dict:
        """Adds item to cart"""
        
    @task(description="Save product to wishlist")
    def add_to_wishlist(self, state: State, product_id: str) -> dict:
        """Saves item for later"""
        
    @task(description="Star product for quick access")
    def star_product(self, state: State, product_id: str) -> dict:
        """Stars item as favorite"""
        
    @task(description="View product details")
    def view_details(self, state: State, product_id: str) -> dict:
        """Shows full product information"""

Prerequisites

@stage(name="checkout", prerequisites=["cart.items", "user.payment_method"])
class CheckoutStage:
    @task(description="Apply discount code")
    def apply_discount(self, state: State, code: str) -> dict:
        """Validates and applies discount"""
        
    @task(description="Complete purchase")
    def complete_purchase(self, state: State) -> dict:
        """Processes payment and creates order"""

Examples (examples folder):

  • E-commerce: Online shopping with browse, cart, and checkout workflows
  • Ride Sharing: Ride booking with location, vehicle selection, and tracking
  • Food Delivery: Restaurant ordering with menu selection and delivery tracking
  • Travel Booking: Flights and hotels with multi-stage search and booking
  • Payment: Payment workflows with verification and compliance checks

We are building the agentic web. Come join us.

Interested in contributing or building with Concierge? Reach out.

Contributing

Contributions are welcome. Please open an issue or submit a pull request.

Release files for concierge-workflows 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for concierge-workflows 0.1.0
File Size Uploaded
concierge_workflows-0.1.0.tar.gz 29.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for concierge-workflows 0.1.0
File Interpreter ABI Platform
concierge_workflows-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 37.7 kB

Release files / concierge_workflows-0.1.0.tar.gz

Download URL concierge_workflows-0.1.0.tar.gz
Size 29.4 kB
Tags Source
SHA-256 checksum
How to use checksums
c0bbd22b04fde5251b291d516357efcd11753a177212060d4023e49f8812a6a0
BLAKE2b-256 checksum
How to use checksums
118f8cd8e8616d69bdd4be51731f6367a4a6e2aff5580d3d8497972e90bc7ded
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.11

Release files / concierge_workflows-0.1.0-py3-none-any.whl

Download URL concierge_workflows-0.1.0-py3-none-any.whl
Size 8.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f09b108acfff9d3f25300a1c9b7418170008f711112358125201e8167868a364
BLAKE2b-256 checksum
How to use checksums
3bdff08c3116decd8c666f6b746026f74b9cc21aaec483b0ec1135d904fa491a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.11

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release 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