Metadata-Version: 2.4
Name: launchpad-ai
Version: 0.1.1
Summary: Turn AI/ML research into production-ready capabilities with typed Pydantic contracts, exposed through pluggable delivery adapters (HTTP, CLI, gRPC, queues).
Project-URL: Homepage, https://github.com/sankalpshekhar14/launchpad
Project-URL: Source, https://github.com/sankalpshekhar14/launchpad
Project-URL: Issue Tracker, https://github.com/sankalpshekhar14/launchpad/issues
Author-email: Sankalp Shekhar <sankalp.shekhar14@gmail.com>
License: Apache-2.0
License-File: LICENSE
Keywords: agents,ai,capability,fastapi,llm,ml,pydantic,sdk
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Requires-Python: >=3.10
Requires-Dist: pydantic>=2.0
Requires-Dist: rich>=13.0
Requires-Dist: typer>=0.12
Provides-Extra: all
Requires-Dist: fastapi>=0.111; extra == 'all'
Requires-Dist: uvicorn[standard]>=0.30; extra == 'all'
Provides-Extra: http
Requires-Dist: fastapi>=0.111; extra == 'http'
Requires-Dist: uvicorn[standard]>=0.30; extra == 'http'
Description-Content-Type: text/markdown

# Launchpad

Launchpad provides a standardized way to turn AI/ML research implementations into reusable, production-ready capabilities. Define your capability once with typed Pydantic contracts — Launchpad handles how it gets delivered.

## Why Launchpad?

AI teams repeatedly solve the same problems: wrapping a model call in retry logic, exposing a capability as an API, logging inputs/outputs for evaluation, versioning prompts. Launchpad makes this a one-time effort.

You implement a capability once. Launchpad handles:
- **Multiple delivery mechanisms** — REST API, gRPC, CLI, SDK import, async queue
- **Typed contracts** — Pydantic models as first-class input/output schemas, validated at every boundary
- **Observability** — structured logging, tracing, evaluation hooks
- **Configuration** — prompt versioning, model routing, runtime overrides
- **Reliability** — retries, fallbacks, circuit breakers

## Core Concepts

| Concept | Description |
|---|---|
| **Capability** | A typed, self-contained AI function: `Capability[InputModel, OutputModel]` |
| **Adapter** | A delivery mechanism that exposes a capability (HTTP, gRPC, etc.) |
| **Pipeline** | A composable chain of capabilities |

## Quick Start

```bash
pip install launchpad-ai
pip install 'launchpad-ai[http]'  # for the HTTP adapter
```

Define your contracts as Pydantic models, then implement the capability:

```python
from pydantic import BaseModel
from launchpad import Capability, capability

class SummarizeInput(BaseModel):
    text: str
    max_length: int = 200

class SummarizeOutput(BaseModel):
    summary: str

@capability(name="summarize", version="1.0")
class Summarize(Capability[SummarizeInput, SummarizeOutput]):
    def run(self, input: SummarizeInput) -> SummarizeOutput:
        # your implementation here
        ...
```

Use it directly:

```python
result = Summarize().run(SummarizeInput(text="..."))
print(result.summary)
```

Or serve it over HTTP:

```python
from launchpad.adapters.http import HttpAdapter

HttpAdapter(Summarize).serve(port=8080)
# POST /summarize  →  { "text": "...", "max_length": 200 }
# GET  /health
# GET  /docs       (OpenAPI)
```

## Project Structure

```
launchpad/
├── src/launchpad/
│   ├── core/          # Capability[I,O] base class and @capability decorator
│   ├── adapters/      # http/ — delivery mechanisms
│   ├── pipeline/      # Capability composition
│   ├── observability/ # Structured logging, OpenTelemetry, eval hooks
│   └── config/        # Prompt versioning, model routing
├── examples/          # Self-contained runnable examples
└── tests/
```

## Documentation

See [AGENTS.md](AGENTS.md) for conventions used when building capabilities and adapters in this repo.

## License

Apache 2.0
