<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>fastware Documentation</title>
  <link href="https://smmh.dev/fastware/feed.xml" rel="self"/>
  <link href="https://smmh.dev/fastware/"/>
  <id>https://smmh.dev/fastware/</id>
  <updated>2026-08-12T00:00:00Z</updated>
  <subtitle>A fast, batteries-included ASGI framework. The FastAPI alternative.</subtitle>
  <entry>
    <title>fastware dev</title>
    <link href="https://smmh.dev/fastware/cli-dev/"/>
    <id>https://smmh.dev/fastware/cli-dev/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen (strictcli), do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>fastware CLI Reference</title>
    <link href="https://smmh.dev/fastware/cli-index/"/>
    <id>https://smmh.dev/fastware/cli-index/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen (strictcli), do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>API Reference</title>
    <link href="https://smmh.dev/fastware/gen-index/"/>
    <id>https://smmh.dev/fastware/gen-index/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.fastware.__main__</title>
    <link href="https://smmh.dev/fastware/src-fastware-__main__/"/>
    <id>https://smmh.dev/fastware/src-fastware-__main__/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.fastware._fswrite</title>
    <link href="https://smmh.dev/fastware/src-fastware-_fswrite/"/>
    <id>https://smmh.dev/fastware/src-fastware-_fswrite/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.fastware._scope</title>
    <link href="https://smmh.dev/fastware/src-fastware-_scope/"/>
    <id>https://smmh.dev/fastware/src-fastware-_scope/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.fastware.app</title>
    <link href="https://smmh.dev/fastware/src-fastware-app/"/>
    <id>https://smmh.dev/fastware/src-fastware-app/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.fastware.audit</title>
    <link href="https://smmh.dev/fastware/src-fastware-audit/"/>
    <id>https://smmh.dev/fastware/src-fastware-audit/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.fastware.auth</title>
    <link href="https://smmh.dev/fastware/src-fastware-auth/"/>
    <id>https://smmh.dev/fastware/src-fastware-auth/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.fastware.cli</title>
    <link href="https://smmh.dev/fastware/src-fastware-cli/"/>
    <id>https://smmh.dev/fastware/src-fastware-cli/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.fastware.config</title>
    <link href="https://smmh.dev/fastware/src-fastware-config/"/>
    <id>https://smmh.dev/fastware/src-fastware-config/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.fastware.dev</title>
    <link href="https://smmh.dev/fastware/src-fastware-dev/"/>
    <id>https://smmh.dev/fastware/src-fastware-dev/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.fastware.devconfig</title>
    <link href="https://smmh.dev/fastware/src-fastware-devconfig/"/>
    <id>https://smmh.dev/fastware/src-fastware-devconfig/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.fastware.di</title>
    <link href="https://smmh.dev/fastware/src-fastware-di/"/>
    <id>https://smmh.dev/fastware/src-fastware-di/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.fastware.error_log</title>
    <link href="https://smmh.dev/fastware/src-fastware-error_log/"/>
    <id>https://smmh.dev/fastware/src-fastware-error_log/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.fastware.features</title>
    <link href="https://smmh.dev/fastware/src-fastware-features/"/>
    <id>https://smmh.dev/fastware/src-fastware-features/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.fastware.logging</title>
    <link href="https://smmh.dev/fastware/src-fastware-logging/"/>
    <id>https://smmh.dev/fastware/src-fastware-logging/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.fastware.mcp</title>
    <link href="https://smmh.dev/fastware/src-fastware-mcp/"/>
    <id>https://smmh.dev/fastware/src-fastware-mcp/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.fastware.middleware</title>
    <link href="https://smmh.dev/fastware/src-fastware-middleware/"/>
    <id>https://smmh.dev/fastware/src-fastware-middleware/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.fastware.request</title>
    <link href="https://smmh.dev/fastware/src-fastware-request/"/>
    <id>https://smmh.dev/fastware/src-fastware-request/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.fastware.responses</title>
    <link href="https://smmh.dev/fastware/src-fastware-responses/"/>
    <id>https://smmh.dev/fastware/src-fastware-responses/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.fastware.routing</title>
    <link href="https://smmh.dev/fastware/src-fastware-routing/"/>
    <id>https://smmh.dev/fastware/src-fastware-routing/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.fastware.server</title>
    <link href="https://smmh.dev/fastware/src-fastware-server/"/>
    <id>https://smmh.dev/fastware/src-fastware-server/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.fastware.sse</title>
    <link href="https://smmh.dev/fastware/src-fastware-sse/"/>
    <id>https://smmh.dev/fastware/src-fastware-sse/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.fastware.supervise</title>
    <link href="https://smmh.dev/fastware/src-fastware-supervise/"/>
    <id>https://smmh.dev/fastware/src-fastware-supervise/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.fastware.tasks</title>
    <link href="https://smmh.dev/fastware/src-fastware-tasks/"/>
    <id>https://smmh.dev/fastware/src-fastware-tasks/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.fastware.testing</title>
    <link href="https://smmh.dev/fastware/src-fastware-testing/"/>
    <id>https://smmh.dev/fastware/src-fastware-testing/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.fastware.websocket</title>
    <link href="https://smmh.dev/fastware/src-fastware-websocket/"/>
    <id>https://smmh.dev/fastware/src-fastware-websocket/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>Background Tasks and Feature Flags</title>
    <link href="https://smmh.dev/fastware/tasks-guide/"/>
    <id>https://smmh.dev/fastware/tasks-guide/</id>
    <updated>2026-07-29T00:00:00Z</updated>
    <summary>fastware provides three complementary systems for application lifecycle management: a background task registry for long-running services, boolean feature flags with per-machine overrides, and a TOML configuration loader with optional Pydantic validation. Together, they let you define tasks that start and stop with the app, gate them behind feature flags, and drive both from a validated config file.</summary>
  </entry>
  <entry>
    <title>Auth API Reference</title>
    <link href="https://smmh.dev/fastware/api-auth/"/>
    <id>https://smmh.dev/fastware/api-auth/</id>
    <updated>2026-07-01T00:00:00Z</updated>
    <summary>&lt;div class=&quot;callout callout-warning&quot;&gt; &lt;p class=&quot;callout-title&quot;&gt;Warning&lt;/p&gt; &lt;p&gt;The auth module requires the `fastware[auth]` extra, which installs `PyJWT` and `bcrypt`. Install with:</summary>
  </entry>
  <entry>
    <title>Middleware API Reference</title>
    <link href="https://smmh.dev/fastware/api-middleware/"/>
    <id>https://smmh.dev/fastware/api-middleware/</id>
    <updated>2026-07-01T00:00:00Z</updated>
    <summary>All middleware classes are pure ASGI -- no framework dependency beyond fastware's own `send_error` helper. This makes them streaming-safe (SSE, WebSocket) and avoids the response-buffering issues of BaseHTTPMiddleware-style wrappers.</summary>
  </entry>
  <entry>
    <title>Server API Reference</title>
    <link href="https://smmh.dev/fastware/api-server/"/>
    <id>https://smmh.dev/fastware/api-server/</id>
    <updated>2026-07-01T00:00:00Z</updated>
    <summary>The server module manages the Granian ASGI server lifecycle: PID file management, port availability checks, single-instance enforcement, background and foreground serving, hot reload, and graceful shutdown.</summary>
  </entry>
  <entry>
    <title>Testing API Reference</title>
    <link href="https://smmh.dev/fastware/api-testing/"/>
    <id>https://smmh.dev/fastware/api-testing/</id>
    <updated>2026-07-01T00:00:00Z</updated>
    <summary>The testing module provides 2 test clients (sync and async) that wrap `httpx` with `ASGITransport`, so tests can exercise a fastware app without starting a real server. Both clients run requests against the ASGI application directly in-process.</summary>
  </entry>
  <entry>
    <title>Core API Reference</title>
    <link href="https://smmh.dev/fastware/api/"/>
    <id>https://smmh.dev/fastware/api/</id>
    <updated>2026-07-01T00:00:00Z</updated>
    <summary>This page documents fastware's core modules: the foundational types, response classes, request handling, routing, WebSocket support, and the application factory. These are the building blocks for every fastware application.</summary>
  </entry>
  <entry>
    <title>Dependency Injection</title>
    <link href="https://smmh.dev/fastware/di-guide/"/>
    <id>https://smmh.dev/fastware/di-guide/</id>
    <updated>2026-07-01T00:00:00Z</updated>
    <summary>fastware's `DependencyResolver` provides per-request dependency resolution with caching and automatic cleanup. It supports sync and async factory functions, the yield pattern for resource lifecycle management, and dependency overrides for testing.</summary>
  </entry>
  <entry>
    <title>Optional Extras</title>
    <link href="https://smmh.dev/fastware/extras/"/>
    <id>https://smmh.dev/fastware/extras/</id>
    <updated>2026-07-01T00:00:00Z</updated>
    <summary>fastware's core depends only on `msgspec` and `granian`. Everything else is opt-in via extras groups. Install only what your application needs, or use `[all]` to get everything.</summary>
  </entry>
  <entry>
    <title>fastware</title>
    <link href="https://smmh.dev/fastware/"/>
    <id>https://smmh.dev/fastware/</id>
    <updated>2026-07-01T00:00:00Z</updated>
    <summary>A fast, batteries-included ASGI framework. The FastAPI alternative.</summary>
  </entry>
  <entry>
    <title>Migrating from FastAPI</title>
    <link href="https://smmh.dev/fastware/migration-fastapi/"/>
    <id>https://smmh.dev/fastware/migration-fastapi/</id>
    <updated>2026-07-01T00:00:00Z</updated>
    <summary>This guide walks through converting a FastAPI application to fastware, covering import changes, pattern translations, and trade-offs.</summary>
  </entry>
  <entry>
    <title>Observability</title>
    <link href="https://smmh.dev/fastware/observability/"/>
    <id>https://smmh.dev/fastware/observability/</id>
    <updated>2026-07-01T00:00:00Z</updated>
    <summary>fastware provides four complementary observability systems: structured logging via structlog, Sentry integration for error tracking, an SQLite-backed error log for 5xx responses, and a JSONL audit log for application events. Each system is optional and independent -- use one, some, or all depending on your needs.</summary>
  </entry>
  <entry>
    <title>Quickstart</title>
    <link href="https://smmh.dev/fastware/quickstart/"/>
    <id>https://smmh.dev/fastware/quickstart/</id>
    <updated>2026-07-01T00:00:00Z</updated>
    <summary>This guide walks through building a complete fastware application from scratch. Each step adds a new capability, and every code block is runnable on its own.</summary>
  </entry>
  <entry>
    <title>SSE Broadcasting</title>
    <link href="https://smmh.dev/fastware/sse-guide/"/>
    <id>https://smmh.dev/fastware/sse-guide/</id>
    <updated>2026-07-01T00:00:00Z</updated>
    <summary>Server-Sent Events (SSE) provide a simple, HTTP-based mechanism for pushing data from server to client. Unlike WebSockets, SSE is unidirectional (server to client only), uses plain HTTP, works through proxies and firewalls, and reconnects automatically.</summary>
  </entry>
  <entry>
    <title>Vite Dev Mode</title>
    <link href="https://smmh.dev/fastware/vite-guide/"/>
    <id>https://smmh.dev/fastware/vite-guide/</id>
    <updated>2026-07-01T00:00:00Z</updated>
    <summary>When building a frontend (React, Vue, Svelte, or plain TypeScript) alongside a fastware backend, you need both servers running during development -- Vite for hot module replacement (HMR) and fastware for your API routes and SSE endpoints. fastware provides two tools for this: the `dev()` function and the `ViteDevProxy` middleware.</summary>
  </entry>
  <entry>
    <title>fastware vs FastAPI</title>
    <link href="https://smmh.dev/fastware/vs-fastapi/"/>
    <id>https://smmh.dev/fastware/vs-fastapi/</id>
    <updated>2026-07-01T00:00:00Z</updated>
    <summary>FastAPI is the most popular Python ASGI framework, known for automatic OpenAPI documentation and type-driven route signatures. fastware takes a different approach: batteries-included infrastructure with the fastest possible JSON serialization.</summary>
  </entry>
  <entry>
    <title>fastware vs Litestar</title>
    <link href="https://smmh.dev/fastware/vs-litestar/"/>
    <id>https://smmh.dev/fastware/vs-litestar/</id>
    <updated>2026-07-01T00:00:00Z</updated>
    <summary>Litestar and fastware share a conviction: msgspec is the right JSON engine for Python web frameworks. Both use it for serialization and deserialization. But they come from different places and make different trade-offs.</summary>
  </entry>
  <entry>
    <title>fastware vs Sanic</title>
    <link href="https://smmh.dev/fastware/vs-sanic/"/>
    <id>https://smmh.dev/fastware/vs-sanic/</id>
    <updated>2026-07-01T00:00:00Z</updated>
    <summary>Sanic and fastware share an unusual trait among Python web frameworks: both bundle their own server instead of deferring to a separate ASGI server like Uvicorn. This makes them both &quot;run it and it works&quot; frameworks, but they make different choices about what that server looks like and what else the framework includes.</summary>
  </entry>
  <entry>
    <title>fastware vs Starlette</title>
    <link href="https://smmh.dev/fastware/vs-starlette/"/>
    <id>https://smmh.dev/fastware/vs-starlette/</id>
    <updated>2026-07-01T00:00:00Z</updated>
    <summary>Starlette is a lightweight ASGI toolkit that provides the building blocks for web applications. FastAPI, for example, is built on top of Starlette. fastware is a batteries-included framework that provides the assembled product -- routing, server management, SSE, auth, and middleware all ship together.</summary>
  </entry>
</feed>
