<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>wesktop Documentation</title>
  <link href="https://smmh.dev/wesktop/feed.xml" rel="self"/>
  <link href="https://smmh.dev/wesktop/"/>
  <id>https://smmh.dev/wesktop/</id>
  <updated>2026-08-12T00:00:00Z</updated>
  <entry>
    <title>wesktop config</title>
    <link href="https://smmh.dev/wesktop/cli-config/"/>
    <id>https://smmh.dev/wesktop/cli-config/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen (strictcli), do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>wesktop diagnose</title>
    <link href="https://smmh.dev/wesktop/cli-diagnose/"/>
    <id>https://smmh.dev/wesktop/cli-diagnose/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen (strictcli), do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>wesktop CLI Reference</title>
    <link href="https://smmh.dev/wesktop/cli-index/"/>
    <id>https://smmh.dev/wesktop/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/wesktop/gen-index/"/>
    <id>https://smmh.dev/wesktop/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.wesktop.__main__</title>
    <link href="https://smmh.dev/wesktop/src-wesktop-__main__/"/>
    <id>https://smmh.dev/wesktop/src-wesktop-__main__/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.wesktop.asgi</title>
    <link href="https://smmh.dev/wesktop/src-wesktop-asgi/"/>
    <id>https://smmh.dev/wesktop/src-wesktop-asgi/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.wesktop.audit</title>
    <link href="https://smmh.dev/wesktop/src-wesktop-audit/"/>
    <id>https://smmh.dev/wesktop/src-wesktop-audit/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.wesktop.auth</title>
    <link href="https://smmh.dev/wesktop/src-wesktop-auth/"/>
    <id>https://smmh.dev/wesktop/src-wesktop-auth/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.wesktop.cli</title>
    <link href="https://smmh.dev/wesktop/src-wesktop-cli/"/>
    <id>https://smmh.dev/wesktop/src-wesktop-cli/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.wesktop.config</title>
    <link href="https://smmh.dev/wesktop/src-wesktop-config/"/>
    <id>https://smmh.dev/wesktop/src-wesktop-config/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.wesktop.desktop</title>
    <link href="https://smmh.dev/wesktop/src-wesktop-desktop/"/>
    <id>https://smmh.dev/wesktop/src-wesktop-desktop/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.wesktop.dev</title>
    <link href="https://smmh.dev/wesktop/src-wesktop-dev/"/>
    <id>https://smmh.dev/wesktop/src-wesktop-dev/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.wesktop.di</title>
    <link href="https://smmh.dev/wesktop/src-wesktop-di/"/>
    <id>https://smmh.dev/wesktop/src-wesktop-di/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.wesktop.entries</title>
    <link href="https://smmh.dev/wesktop/src-wesktop-entries/"/>
    <id>https://smmh.dev/wesktop/src-wesktop-entries/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.wesktop.error_log</title>
    <link href="https://smmh.dev/wesktop/src-wesktop-error_log/"/>
    <id>https://smmh.dev/wesktop/src-wesktop-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.wesktop.features</title>
    <link href="https://smmh.dev/wesktop/src-wesktop-features/"/>
    <id>https://smmh.dev/wesktop/src-wesktop-features/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.wesktop.logging</title>
    <link href="https://smmh.dev/wesktop/src-wesktop-logging/"/>
    <id>https://smmh.dev/wesktop/src-wesktop-logging/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.wesktop.mcp</title>
    <link href="https://smmh.dev/wesktop/src-wesktop-mcp/"/>
    <id>https://smmh.dev/wesktop/src-wesktop-mcp/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.wesktop.mcp_tools._http</title>
    <link href="https://smmh.dev/wesktop/src-wesktop-mcp_tools-_http/"/>
    <id>https://smmh.dev/wesktop/src-wesktop-mcp_tools-_http/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.wesktop.mcp_tools._paths</title>
    <link href="https://smmh.dev/wesktop/src-wesktop-mcp_tools-_paths/"/>
    <id>https://smmh.dev/wesktop/src-wesktop-mcp_tools-_paths/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.wesktop.mcp_tools.ask_user</title>
    <link href="https://smmh.dev/wesktop/src-wesktop-mcp_tools-ask_user/"/>
    <id>https://smmh.dev/wesktop/src-wesktop-mcp_tools-ask_user/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.wesktop.mcp_tools.deployment</title>
    <link href="https://smmh.dev/wesktop/src-wesktop-mcp_tools-deployment/"/>
    <id>https://smmh.dev/wesktop/src-wesktop-mcp_tools-deployment/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.wesktop.mcp_tools.filesystem</title>
    <link href="https://smmh.dev/wesktop/src-wesktop-mcp_tools-filesystem/"/>
    <id>https://smmh.dev/wesktop/src-wesktop-mcp_tools-filesystem/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.wesktop.mcp_tools.git</title>
    <link href="https://smmh.dev/wesktop/src-wesktop-mcp_tools-git/"/>
    <id>https://smmh.dev/wesktop/src-wesktop-mcp_tools-git/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.wesktop.mcp_tools.review</title>
    <link href="https://smmh.dev/wesktop/src-wesktop-mcp_tools-review/"/>
    <id>https://smmh.dev/wesktop/src-wesktop-mcp_tools-review/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.wesktop.mcp_tools.testing</title>
    <link href="https://smmh.dev/wesktop/src-wesktop-mcp_tools-testing/"/>
    <id>https://smmh.dev/wesktop/src-wesktop-mcp_tools-testing/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.wesktop.mcp_tools</title>
    <link href="https://smmh.dev/wesktop/src-wesktop-mcp_tools/"/>
    <id>https://smmh.dev/wesktop/src-wesktop-mcp_tools/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.wesktop.middleware</title>
    <link href="https://smmh.dev/wesktop/src-wesktop-middleware/"/>
    <id>https://smmh.dev/wesktop/src-wesktop-middleware/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.wesktop.runtime_bridge</title>
    <link href="https://smmh.dev/wesktop/src-wesktop-runtime_bridge/"/>
    <id>https://smmh.dev/wesktop/src-wesktop-runtime_bridge/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.wesktop.sdui</title>
    <link href="https://smmh.dev/wesktop/src-wesktop-sdui/"/>
    <id>https://smmh.dev/wesktop/src-wesktop-sdui/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.wesktop.server</title>
    <link href="https://smmh.dev/wesktop/src-wesktop-server/"/>
    <id>https://smmh.dev/wesktop/src-wesktop-server/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.wesktop.sse</title>
    <link href="https://smmh.dev/wesktop/src-wesktop-sse/"/>
    <id>https://smmh.dev/wesktop/src-wesktop-sse/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.wesktop.tasks</title>
    <link href="https://smmh.dev/wesktop/src-wesktop-tasks/"/>
    <id>https://smmh.dev/wesktop/src-wesktop-tasks/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>src.wesktop.testing</title>
    <link href="https://smmh.dev/wesktop/src-wesktop-testing/"/>
    <id>https://smmh.dev/wesktop/src-wesktop-testing/</id>
    <updated>2026-08-12T00:00:00Z</updated>
    <summary>&lt;!-- generated by selfdoc gen, do not edit --&gt;</summary>
  </entry>
  <entry>
    <title>Getting Started</title>
    <link href="https://smmh.dev/wesktop/getting-started/"/>
    <id>https://smmh.dev/wesktop/getting-started/</id>
    <updated>2026-07-29T00:00:00Z</updated>
    <summary>This tutorial walks through building a complete wesktop application: a system monitor that displays CPU and memory usage in real time, with a server-driven UI dashboard and a native desktop window.</summary>
  </entry>
  <entry>
    <title>SDUI Primitive Reference</title>
    <link href="https://smmh.dev/wesktop/sdui-reference/"/>
    <id>https://smmh.dev/wesktop/sdui-reference/</id>
    <updated>2026-07-29T00:00:00Z</updated>
    <summary>wesktop ships 40 Server-Driven UI primitives as Pydantic models in `wesktop.sdui`. Each model validates its props and serializes to the dict shape that the dashboard's `SDUIRenderer` expects: `{&quot;type&quot;: ..., &quot;props&quot;: {...}}` with an optional `&quot;if&quot;` key for conditional rendering.</summary>
  </entry>
  <entry>
    <title>API Reference</title>
    <link href="https://smmh.dev/wesktop/api/"/>
    <id>https://smmh.dev/wesktop/api/</id>
    <updated>2026-07-01T00:00:00Z</updated>
    <summary>wesktop exposes 117 public symbols via `import wesktop`. Most of these are re-exports from [fastware](https://docs.smmh.dev/fastware) -- the ASGI micro-framework that provides routing, responses, SSE, middleware, auth, dependency injection, config, testing, server lifecycle, background tasks, feature flags, audit logging, error logging, and MCP support. For documentation on those symbols, see the [fastware API reference](https://docs.smmh.dev/fastware/api/).</summary>
  </entry>
  <entry>
    <title>wesktop</title>
    <link href="https://smmh.dev/wesktop/"/>
    <id>https://smmh.dev/wesktop/</id>
    <updated>2026-07-01T00:00:00Z</updated>
    <summary>wesktop is a Python framework for building web-based desktop applications. It combines [fastware](https://docs.smmh.dev/fastware) (an ASGI micro-framework with routing, SSE, middleware, auth, and server lifecycle) with [pywebview](https://pywebview.flowrl.com/) (native OS windows) to let you write Python backends that open as desktop apps -- or run headless as web servers.</summary>
  </entry>
  <entry>
    <title>wesktop vs Electron</title>
    <link href="https://smmh.dev/wesktop/vs-electron/"/>
    <id>https://smmh.dev/wesktop/vs-electron/</id>
    <updated>2026-07-01T00:00:00Z</updated>
    <summary>Electron bundles a full Chromium browser and a Node.js runtime into every application. wesktop uses the OS-native webview (WebKit on Linux/macOS, Edge WebView2 on Windows) and a Python backend served by granian, a Rust-based ASGI server. The architectural difference drives most of the tradeoffs below.</summary>
  </entry>
  <entry>
    <title>wesktop vs pywebview</title>
    <link href="https://smmh.dev/wesktop/vs-pywebview/"/>
    <id>https://smmh.dev/wesktop/vs-pywebview/</id>
    <updated>2026-07-01T00:00:00Z</updated>
    <summary>wesktop is built on pywebview. It uses pywebview to open native OS windows -- there is no fork, no wrapper, no replacement. This page explains what wesktop adds on top of bare pywebview and when you might want one over the other.</summary>
  </entry>
  <entry>
    <title>wesktop vs Tauri</title>
    <link href="https://smmh.dev/wesktop/vs-tauri/"/>
    <id>https://smmh.dev/wesktop/vs-tauri/</id>
    <updated>2026-07-01T00:00:00Z</updated>
    <summary>Both wesktop and Tauri reject the Electron approach of bundling Chromium. Both use the OS-native webview (WebKit on Linux/macOS, Edge WebView2 on Windows), resulting in small bundles and low memory usage. The core difference is the backend language: Tauri uses Rust, wesktop uses Python.</summary>
  </entry>
</feed>
