Skip to main content

Documentation Index

Fetch the complete documentation index at: https://launchpad.datalumina.com/llms.txt

Use this file to discover all available pages before exploring further.

v3.4.1
2026-05-12

What’s Changed

Bug fixes

  • Celery task discovery now points at launchpad.worker, matching the packaged app/launchpad/ module structure introduced in v3.4.0. Workers can discover tasks correctly after installing the project as a package.
  • Event persistence now stores the validated event model directly on Event.data, avoiding an unnecessary JSON dump step before the repository writes the event.
  • Azure OpenAI provider setup now uses pydantic-ai’s AzureProvider with AZURE_OPENAI_ENDPOINT, AZURE_OPENAI_API_KEY, and AZURE_OPENAI_API_VERSION (default 2025-04-01-preview).

Provider cleanup

  • Mistral support was removed from ModelProvider and Docker Compose environment forwarding to keep the provider list aligned with the currently supported runtime paths.
  • Google Vertex AI credential loading now passes an empty string when GOOGLE_APPLICATION_CREDENTIALS is unset, making the expected configuration failure clearer.

Dependencies and developer tooling

  • pydantic-ai was bumped from >=1.80 to >=1.94.
  • Pyright configuration now points at the app package root and local .venv, improving editor/type-checker resolution for launchpad.* imports.
v3.4.0
2026-05-05

What’s Changed

Project layout

The runtime code that used to live flat under app/ is now a proper installable Python package: app/launchpad/. pyproject.toml declares hatchling as the build backend so uv sync installs the project in editable mode — no more sys.path tweaks in playground scripts, and IDE / pyright pick up the package tree natively.
  • Imports: every from core.…, from workflows.…, etc. is now from launchpad.core.… / from launchpad.workflows.…. Same applies to api, services, database, worker, utils, schemas.
  • .env moved to the repo root (was app/.env). docker/.env still lives under docker/ for compose-level settings.
  • Alembic stays colocated with the package at app/launchpad/alembic/; ./migrate.sh and ./makemigration.sh are unchanged but now run from app/launchpad/.
  • Docker uses WORKDIR /workspace, installs the package editable via uv pip install -e ., and mounts ./app:/workspace/app for hot reload. The Celery worker’s -A target is launchpad.worker.config.
  • Playground scripts dropped their sys.path.append(...) preamble; fixtures and .env now load from their new paths.

Reference workflows grouped under examples/

Every shipped workflow now lives in its own package under app/launchpad/workflows/examples/<name>/ with schema.py, workflow.py, a nodes/ directory, a request_examples/ folder, and a README.md. The examples/ grouping makes it explicit that these are demos to read and replace — your own workflows belong at app/launchpad/workflows/<name>/. The WorkflowRegistry enum exposes five ready-to-run workflows:
  • STREAMINGExampleStreamingWorkflow (renamed from StreamingExampleWorkflow), backs POST /v1/chat/completions.
  • QUICKSTARTCustomerCareWorkflow, concurrent analysis + routing + Jinja2 prompts colocated at app/launchpad/workflows/examples/quickstart/prompts/.
  • LANGFUSE_TRACING (new)LangfuseTracingWorkflow, a small moderation pipeline used as a tracing demo.
  • PGVECTOR_RAG (new)RagExampleWorkflow, two-node retrieval + generation on top of a PgvectorRAGService wrapper around vecs + OpenAI embeddings.
  • NESTED_WORKFLOW (new)NestedWorkflow, a deterministic parent/child workflow composition demo that reuses the same TaskContext.

Core

  • Workflow compositionWorkflow.run() and Workflow.run_async() now accept an optional context= kwarg so a parent workflow can hand its TaskContext to a child workflow. The parent’s node registry is preserved on return.
  • Nested workflows — workflows can now call other workflows from inside a node by using await ChildWorkflow().run_async(context=task_context). The new NESTED_WORKFLOW example demonstrates a parent workflow delegating reply drafting to a child workflow while reusing the same TaskContext.
  • TaskContext gains should_stop: bool and a matching stop_workflow() helper, plus trace_id: str | None captured on entry when tracing is enabled.
  • Node.cleanup() is now explicit on the base class and invoked by the orchestrator after each node run, including when an exception propagates.
  • enable_tracing defaults to False — opt in per workflow instance. Invalid Langfuse credentials raise LangfuseAuthenticationError at construction time.
  • AgentConfig.instructions replaces system_prompt; AgentNode instances attach dynamic context with @self.agent.instructions instead of @self.agent.system_prompt.

Prompt management

  • Colocated promptsPromptManager.get_prompt(..., prompts_dir=PROMPTS_DIR) loads templates next to the workflow that owns them.
  • Frontmatter supportpython-frontmatter parses YAML metadata at the top of each .j2 file; surfaced via PromptManager.get_template_info.

Playground

  • One script per reference workflow: playground/{quickstart,nested_workflow,streaming,langfuse_tracing,pgvector_rag}.py. The legacy workflow_playground.py and send_event.py scripts have been removed.

Docker

  • Supabase remains excluded by default in docker-compose.yml; uncomment docker-compose.supabase.yml when you need Studio, Auth, Realtime, Storage, or the Supabase gateway. Caddy remains opt-in for HTTPS deployments.

Dependencies

  • langfuse>=3.10.5, jinja2>=3.1.6, python-frontmatter, vecs>=0.4, tiktoken>=0.12.0
  • Python ==3.13.13
  • pydantic-ai>=1.80
v3.3.0
2025-12-11

What’s Changed

New Features

  • SSE Streaming with OpenAI-compatible API - New /v1/chat/completions endpoint that streams responses using Server-Sent Events, following the OpenAI API specification
  • Workflow streaming support - Added run_stream_async() method to the Workflow class for streaming workflow execution
  • AgentStreamingNode - New node type for streaming LLM responses with stream_text_deltas() and stream_structured_deltas() methods
  • StreamingExampleWorkflow - Working example with TextStreamingNode and StructuredStreamingNode demonstrating both plain text and structured output streaming

Langfuse Integration

  • Native SDK integration - Replaced OpenTelemetry-based tracing with the native Langfuse SDK
  • Configurable tracing - Enable or disable tracing per workflow with enable_tracing parameter: Workflow(enable_tracing=True)
  • Automatic span creation - Workflow and node executions are automatically traced when enabled

Core Updates

  • Python version requirement - Bumped minimum Python version to >=3.13.7

Docker Infrastructure

  • Modular compose files - Split Docker configuration into separate files for easier customization:
    • docker-compose.launchpad.yml - Core application (api, celery, redis, db)
    • docker-compose.supabase.yml - Full Supabase stack (studio, auth, realtime, storage, etc.)
    • docker-compose.caddy.yml - Reverse proxy with automatic HTTPS
  • Updated Supabase images - All Supabase services updated to latest versions:
    • Studio: 2025.11.26-sha-8f096b5
    • GoTrue (Auth): v2.183.0
    • PostgREST: v13.0.7
    • Realtime: v2.65.3
    • Storage API: v1.32.0
    • Postgres Meta: v0.93.1
    • Edge Runtime: v1.69.25
    • Logflare (Analytics): 1.26.13
    • Supavisor (Connection Pooler): 2.7.4

Dependencies

  • Updated pydantic-ai from >=1.0.15 to >=1.26

Files Changed

  • app/api/openai.py (new)
  • app/core/nodes/agent_streaming_node.py (new)
  • app/core/workflow.py
  • app/workflows/streaming_example_workflow.py (new)
  • app/workflows/streaming_example_workflow_nodes/ (new)
  • app/utils/event_stream_generator.py (new)
  • pyproject.toml
  • docker/docker-compose.yml (restructured)
  • docker/docker-compose.launchpad.yml (new)
  • docker/docker-compose.supabase.yml (new)
  • docker/docker-compose.caddy.yml (new)
v3.2.0
2025-10-07

What’s Changed

Core Improvements

  • Standardized node output management - Added save_output() and get_output() methods to handle node outputs in a standardized way using Pydantic models. Users can now access node data by simply providing the node class, eliminating the need to memorize specific keys for storing and retrieving node outputs.
  • Enhanced RouterNode functionality - Added task context handling and improved output management capabilities
  • Refactored node and workflow logic - Updated base node and workflow classes to support task context handling across the system
  • Code cleanup - Removed unused OpenAI model imports from agent module

Model Provider Updates

  • OpenAI integration - Migrated from OpenAIModel to OpenAIChatModel for improved consistency

Dependencies

  • Updated pydantic-ai from >=0.7.5 to >=1.0.15
  • Updated alembic dependency to >=1.16.4
  • Updated uv.lock with latest package metadata

Files Changed

  • app/core/nodes/agent.py
  • app/core/nodes/base.py
  • app/core/nodes/router.py
  • app/core/workflow.py
  • pyproject.toml
  • uv.lock