Skip to main content

cosalette

cosalette — An opinionated Python framework for IoT-to-MQTT bridges

What is cosalette?

cosalette lets you build IoT-to-MQTT bridge daemons in Python with minimal boilerplate. You define devices (telemetry pollers or command handlers), register hardware adapters, and the framework handles MQTT wiring, structured logging, health reporting, error publishing, and graceful lifecycle management.

Quick Example

import cosalette

app = cosalette.App(name="sensor2mqtt", version="0.1.0")


@app.telemetry("sensor", interval=5.0)
async def sensor() -> dict[str, object]:
    return {"temperature": 21.5, "humidity": 55.0}


if __name__ == "__main__":
    app.run()

See the full Quickstart for a complete walkthrough.

Router Composition (Multi-Module Apps)

For production apps, use Router to organize devices into separate modules without circular imports:

# sensors.py
import cosalette

router = cosalette.Router(prefix="sensors")


@router.telemetry("temperature", interval=30)
async def read_temp() -> dict[str, object]:
    return {"celsius": 22.5}


# main.py
import cosalette
from sensors import router

app = cosalette.App(name="home2mqtt", version="1.0.0")
app.include_router(router)
# → publishes to: home2mqtt/sensors/temperature/state

See Router Composition for full patterns.

Typed Contracts & Schema Inspection

cosalette supports Pydantic-validated payloads and typed returns for type-safe command handlers and telemetry, plus dependency injection for shared logic:

from typing import Annotated
from pydantic import BaseModel
import cosalette

app = cosalette.App(name="thermo2mqtt", version="1.0.0")


class SetpointCommand(BaseModel):
    value: float
    unit: str = "celsius"


class ThermostatState(BaseModel):
    setpoint: float
    unit: str


def get_device_id() -> str:
    return "thermo-001"


@app.command("thermostat/set")
async def set_temp(
    cmd: Annotated[SetpointCommand, cosalette.Payload()],
    device_id: Annotated[str, cosalette.Depends(get_device_id)],
) -> ThermostatState:
    return ThermostatState(setpoint=cmd.value, unit=cmd.unit)

Inspect the contract to generate AsyncAPI docs or consumer artifacts:

cosalette manifest myapp.main:app           # JSON AsyncAPI 3.0.0
cosalette manifest myapp.main:app --table   # human-readable table

Or programmatically:

doc = app.asyncapi()  # returns dict conforming to AsyncAPI 3.0.0

See Contract-First Route Design and Schema Enforcement for full details.

Key Features

  • Declarative device registration — define telemetry and command devices with @app.telemetry(), @app.command(), and @app.device() (guide)
  • Hexagonal architecture — protocol-based ports keep hardware adapters swappable and testable (concept)
  • Lifespan + dependency injection — structured startup/teardown and type-based DI for adapters, settings, and shared state (guide)
  • Command routing — use sub-topic handlers and ctx.commands() for clean control flows (guide)
  • Flexible scheduling — combine fixed intervals, Quartz cron, and ctx.sleep_until() wall-clock timing
  • Publish strategies — emit on change, on cadence, or with composed rules (concept)
  • Health checks + auto-restart — monitor adapters and recover from wedged hardware automatically (concept)
  • Persistence — store state with JSON, SQLite, or in-memory backends plus save policies (concept)
  • Schema-aware integrations — validate payloads and generate consumer artifacts from AsyncAPI schemas (guide)
  • AI-assisted development — optional MCP tools plus packaged instructions for Copilot and other IDE-native agents (guide)

Installation

pip install cosalette

Or with uv:

uv add cosalette

To include the optional MCP server for IDE-native AI agent integration (VS Code Copilot, Cursor, Windsurf, Claude Code):

uv add 'cosalette[mcp]'
pip install 'cosalette[mcp]'

See the MCP Server guide for setup and tool reference.

Contributing

See CONTRIBUTING.md for development setup, commands, project structure, and code quality standards.

Documentation

Full documentation is published at ff-fab.github.io/cosalette. Development docs tracking the main branch are available at Dev Docs (latest).

Section What you'll find
Getting Started Installation, quickstart tutorial
Concepts Architecture, lifecycle, health checks, filters, persistence
How-To Guides Telemetry, commands, adapters, lifespan DI, schema, testing, MCP
Reference API docs, CLI options, payload schemas
ADRs Architecture Decision Records

License

MIT License. See LICENSE for details.

Metadata

Release files for cosalette 0.11.3

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

Source distribution (sdist)

Source distribution for cosalette 0.11.3
File Size Uploaded
cosalette-0.11.3.tar.gz 826.5 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for cosalette 0.11.3
File
cosalette-0.11.3-cp314-abi3-win_amd64.whl CPython 3.14 abi3 Windows x86-64 Details
cosalette-0.11.3-cp314-abi3-musllinux_1_2_x86_64.whl CPython 3.14 abi3 Linux musl 1.2+ x86-64 Details
cosalette-0.11.3-cp314-abi3-musllinux_1_2_armv7l.whl CPython 3.14 abi3 Linux musl 1.2+ ARMv7l Details
cosalette-0.11.3-cp314-abi3-musllinux_1_2_aarch64.whl CPython 3.14 abi3 Linux musl 1.2+ ARM64 Details
cosalette-0.11.3-cp314-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 abi3 Linux glibc 2.17+ x86-64 Details
cosalette-0.11.3-cp314-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl CPython 3.14 abi3 Linux glibc 2.17+ ARMv7l Details
cosalette-0.11.3-cp314-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.14 abi3 Linux glibc 2.17+ ARM64 Details
cosalette-0.11.3-cp314-abi3-macosx_11_0_arm64.whl CPython 3.14 abi3 macOS 11.0+ ARM64 Details
cosalette-0.11.3-cp314-abi3-macosx_10_12_x86_64.whl CPython 3.14 abi3 macOS 10.12+ x86-64 Details

Total release size: 13.8 MB

Release files / cosalette-0.11.3.tar.gz

Download URL cosalette-0.11.3.tar.gz
Size 826.5 kB
Tags Source
SHA-256 checksum
How to use checksums
7a4bd05ead7d25505108288ca649e549dc443e76100d49cc40464561de9d899c
BLAKE2b-256 checksum
How to use checksums
560fc3acaf11de32500babf544e933ab2a4ad01f080c2fda47c0a8a6fd645798
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.

Transparency log

Release files / cosalette-0.11.3-cp314-abi3-win_amd64.whl

Download URL cosalette-0.11.3-cp314-abi3-win_amd64.whl
Size 1.2 MB
Tags CPython 3.14 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
71eb03262c5dbb0d09301380d0df5a23376ddeffc4561b69125b05e7651aeef4
BLAKE2b-256 checksum
How to use checksums
4cc884355ade575a6cb40916549e1ae5d8f104835dc912a0c4cd1a012579adac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.

Transparency log

Release files / cosalette-0.11.3-cp314-abi3-musllinux_1_2_x86_64.whl

Download URL cosalette-0.11.3-cp314-abi3-musllinux_1_2_x86_64.whl
Size 1.6 MB
Tags CPython 3.14 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
33e625cf4950696af6bedf7d9d5e1b65625d3677167b0ed29a04379faa866090
BLAKE2b-256 checksum
How to use checksums
570e9929dcad44d8c4d12f40fa30ee0044b0984e28ef17c9cc0746e6dbccc192
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.

Transparency log

Release files / cosalette-0.11.3-cp314-abi3-musllinux_1_2_armv7l.whl

Download URL cosalette-0.11.3-cp314-abi3-musllinux_1_2_armv7l.whl
Size 1.7 MB
Tags CPython 3.14 Linux musl 1.2+ ARMv7l abi3
SHA-256 checksum
How to use checksums
a445db177a067782e151405a77bbc5ec49990d17c6a375fb2d5f924591ad96fd
BLAKE2b-256 checksum
How to use checksums
7b5fa9a284c414634ea810af0ee46633d5e1abab9931ee3550bed75788f40a5b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.

Transparency log

Release files / cosalette-0.11.3-cp314-abi3-musllinux_1_2_aarch64.whl

Download URL cosalette-0.11.3-cp314-abi3-musllinux_1_2_aarch64.whl
Size 1.6 MB
Tags CPython 3.14 Linux musl 1.2+ ARM64 abi3
SHA-256 checksum
How to use checksums
657429acb7c3c7e8153549dc2b649350a183648d4185e6f409865bb3d4b90148
BLAKE2b-256 checksum
How to use checksums
2aa87fd91ead78385cca6a894c3e95428c137fe952b1292110ee0257e9eb0526
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.

Transparency log

Release files / cosalette-0.11.3-cp314-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL cosalette-0.11.3-cp314-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.4 MB
Tags CPython 3.14 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
02c3a7750b931d467a92ab4172c6c632ae233ace30f1789882e6641eb0849d49
BLAKE2b-256 checksum
How to use checksums
6742bb696bd9095ac349d2471a79dc861b9f1142da21aa27945a5ccabf69d477
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.

Transparency log

Release files / cosalette-0.11.3-cp314-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl

Download URL cosalette-0.11.3-cp314-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Size 1.4 MB
Tags CPython 3.14 Linux glibc 2.17+ ARMv7l abi3
SHA-256 checksum
How to use checksums
889f083d3ffac32668623026344d4d10e630f513449bf5b4581b12866df51703
BLAKE2b-256 checksum
How to use checksums
0ea850018b07d034b56613ad40ef4a3a06ba70d6b720c1681f7ea17af9447606
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.

Transparency log

Release files / cosalette-0.11.3-cp314-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL cosalette-0.11.3-cp314-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.4 MB
Tags CPython 3.14 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
1af78e91c33b19df68d18abeb4d1687528bba8a384c90fa47ad4e713659a9c78
BLAKE2b-256 checksum
How to use checksums
a8a055e78405ca573d2fa259b960ec3fb807f72a7771768e6d63bdfd926a03c4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.

Transparency log

Release files / cosalette-0.11.3-cp314-abi3-macosx_11_0_arm64.whl

Download URL cosalette-0.11.3-cp314-abi3-macosx_11_0_arm64.whl
Size 1.3 MB
Tags CPython 3.14 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
871661beda189562288c3c90da95268ea513afce6cce5f946b5c4ca2b349c798
BLAKE2b-256 checksum
How to use checksums
583aa29f4ec53f94f9d48d8f4fbaf90af086316f8f8c611d07c1aa8c0d006343
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.

Transparency log

Release files / cosalette-0.11.3-cp314-abi3-macosx_10_12_x86_64.whl

Download URL cosalette-0.11.3-cp314-abi3-macosx_10_12_x86_64.whl
Size 1.4 MB
Tags CPython 3.14 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
30e21213a773f80229e629ac4842ca88462e41d24ca33b7d888da41a4eeb1efa
BLAKE2b-256 checksum
How to use checksums
d53f48bf4be571e3d89088c8cd4a5f0e019097e8d55cd90d504ab52aca3e91ec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.11.3 This release

10 release files

0.10.5

9 release files

0.10.4

9 release files

0.10.3

9 release files

0.10.2

9 release files

0.10.1

9 release files

0.10.0

9 release files

0.9.6

9 release files

0.9.5

9 release files

0.9.4

9 release files

0.9.3

9 release files

0.9.2

9 release files

0.9.1

9 release files

0.9.0

9 release files

0.8.0

9 release files

0.7.1

9 release files

0.7.0

9 release files

0.6.3

9 release files

0.6.2

9 release files

0.6.1

9 release files

0.6.0

9 release files

0.5.9

9 release files

0.5.8

9 release files

0.5.7

9 release files

0.5.6

9 release files

0.5.5

9 release files

0.5.4

9 release files

0.5.3

9 release files

0.5.2

9 release files

0.5.1

9 release files

0.5.0

9 release files

0.4.5

9 release files

0.4.4

9 release files

0.4.3

9 release files

0.4.2

9 release files

0.4.0

9 release files

0.3.12

9 release files

0.3.11

9 release files

0.3.10

9 release files

0.3.9

9 release files

0.3.8

9 release files

0.3.7

9 release files

0.3.6

9 release files

0.3.5

9 release files

0.3.4

9 release files

0.3.3

9 release files

0.3.2

9 release files

0.3.1

9 release files

0.3.0

9 release files

0.2.1

13 release files

0.2.0

12 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

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