<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
  <url>
    <loc>https://www.ospreylang.dev/docs/packages-in-vscode/</loc>
    <video:video>
      <video:thumbnail_loc>https://www.ospreylang.dev/assets/videos/osprey-package-manager-poster.jpg</video:thumbnail_loc>
      <video:title>Add and remove Osprey packages in VS Code</video:title>
      <video:description>Browse Osprey packages, review audit warnings, add and verify a dependency, then remove it through the VS Code package workspace.</video:description>
      <video:content_loc>https://www.ospreylang.dev/assets/videos/osprey-package-manager.mp4</video:content_loc>
      <video:duration>48</video:duration>
      <video:publication_date>2026-10-25T21:32:56+11:00</video:publication_date>
      <video:family_friendly>yes</video:family_friendly>
      <video:requires_subscription>no</video:requires_subscription>
      <video:live>no</video:live>
      <video:tag>Osprey</video:tag>
      <video:tag>VS Code</video:tag>
      <video:tag>package manager</video:tag>
      <video:tag>dependencies</video:tag>
      <video:tag>package registry</video:tag>
    </video:video>
  </url>
  <url>
    <loc>https://www.ospreylang.dev/docs/proofs/videos/dependent-types/</loc>
    <video:video>
      <video:thumbnail_loc>https://www.ospreylang.dev/assets/videos/osprey-dependent-types-poster.jpg</video:thumbnail_loc>
      <video:title>What are dependent types?: for programmers</video:title>
      <video:description>Types can describe facts about values. Start with a list-length example, then watch Osprey check an actual identity proof. This version is for programmers.</video:description>
      <video:content_loc>https://www.ospreylang.dev/assets/videos/osprey-dependent-types.mp4</video:content_loc>
      <video:duration>100</video:duration>
      <video:publication_date>2026-10-30T09:09:08+11:00</video:publication_date>
      <video:family_friendly>yes</video:family_friendly>
      <video:requires_subscription>no</video:requires_subscription>
      <video:live>no</video:live>
      <video:tag>Osprey</video:tag>
      <video:tag>proofs</video:tag>
      <video:tag>What are dependent types?</video:tag>
      <video:tag>programmers</video:tag>
    </video:video>
  </url>
  <url>
    <loc>https://www.ospreylang.dev/docs/proofs/videos/osprey-proof-kernel/</loc>
    <video:video>
      <video:thumbnail_loc>https://www.ospreylang.dev/assets/videos/osprey-proof-kernel-poster.jpg</video:thumbnail_loc>
      <video:title>How Osprey checks a proof: for programmers</video:title>
      <video:description>Follow a statement and its evidence through the proof kernel written in Osprey. This version is for programmers.</video:description>
      <video:content_loc>https://www.ospreylang.dev/assets/videos/osprey-proof-kernel.mp4</video:content_loc>
      <video:duration>109</video:duration>
      <video:publication_date>2026-10-30T09:23:14+11:00</video:publication_date>
      <video:family_friendly>yes</video:family_friendly>
      <video:requires_subscription>no</video:requires_subscription>
      <video:live>no</video:live>
      <video:tag>Osprey</video:tag>
      <video:tag>proofs</video:tag>
      <video:tag>How Osprey checks a proof</video:tag>
      <video:tag>programmers</video:tag>
    </video:video>
  </url>
  <url>
    <loc>https://www.ospreylang.dev/docs/proofs/videos/proof-workbench/</loc>
    <video:video>
      <video:thumbnail_loc>https://www.ospreylang.dev/assets/videos/osprey-proof-workbench-poster.jpg</video:thumbnail_loc>
      <video:title>Meet the proof workbench: for programmers</video:title>
      <video:description>Write a small argument, inspect hypotheses and goals, and complete a guided exercise in the real Workbench. This version is for programmers.</video:description>
      <video:content_loc>https://www.ospreylang.dev/assets/videos/osprey-proof-workbench.mp4</video:content_loc>
      <video:duration>109</video:duration>
      <video:publication_date>2026-10-30T09:15:56+11:00</video:publication_date>
      <video:family_friendly>yes</video:family_friendly>
      <video:requires_subscription>no</video:requires_subscription>
      <video:live>no</video:live>
      <video:tag>Osprey</video:tag>
      <video:tag>proofs</video:tag>
      <video:tag>Use the Proof Workbench</video:tag>
      <video:tag>programmers</video:tag>
    </video:video>
  </url>
  <url>
    <loc>https://www.ospreylang.dev/docs/proofs/videos/mathlib-bridge/</loc>
    <video:video>
      <video:thumbnail_loc>https://www.ospreylang.dev/assets/videos/osprey-mathlib-bridge-poster.jpg</video:thumbnail_loc>
      <video:title>The Mathlib port is already underway: for programmers</video:title>
      <video:description>See selected imported proofs checked in Osprey and learn how the actual Mathlib Euclid import is progressing. This version is for programmers.</video:description>
      <video:content_loc>https://www.ospreylang.dev/assets/videos/osprey-mathlib-bridge.mp4</video:content_loc>
      <video:duration>166</video:duration>
      <video:publication_date>2026-10-30T14:52:02+11:00</video:publication_date>
      <video:family_friendly>yes</video:family_friendly>
      <video:requires_subscription>no</video:requires_subscription>
      <video:live>no</video:live>
      <video:tag>Osprey</video:tag>
      <video:tag>proofs</video:tag>
      <video:tag>The Mathlib port is underway</video:tag>
      <video:tag>programmers</video:tag>
    </video:video>
  </url>
  <url>
    <loc>https://www.ospreylang.dev/docs/proofs/videos/proofs-that-say-no/</loc>
    <video:video>
      <video:thumbnail_loc>https://www.ospreylang.dev/assets/videos/osprey-proofs-that-say-no-poster.jpg</video:thumbnail_loc>
      <video:title>A proof checker must say no: for programmers</video:title>
      <video:description>Compare a valid proof with deliberately corrupted evidence and a false replacement statement. This version is for programmers.</video:description>
      <video:content_loc>https://www.ospreylang.dev/assets/videos/osprey-proofs-that-say-no.mp4</video:content_loc>
      <video:duration>107</video:duration>
      <video:publication_date>2026-10-30T09:10:14+11:00</video:publication_date>
      <video:family_friendly>yes</video:family_friendly>
      <video:requires_subscription>no</video:requires_subscription>
      <video:live>no</video:live>
      <video:tag>Osprey</video:tag>
      <video:tag>proofs</video:tag>
      <video:tag>A proof checker must say no</video:tag>
      <video:tag>programmers</video:tag>
    </video:video>
  </url>
  <url>
    <loc>https://www.ospreylang.dev/docs/proofs/videos/navier-stokes-proof/</loc>
    <video:video>
      <video:thumbnail_loc>https://www.ospreylang.dev/assets/videos/osprey-navier-stokes-proof-poster.jpg</video:thumbnail_loc>
      <video:title>Navier-Stokes: OpenAI&#39;s published solution: for programmers</video:title>
      <video:description>Understand OpenAI&#39;s published Navier-Stokes solution and Lean formalization, then explore a real Osprey fluid calculation and checked Workbench exercise. This version is for programmers.</video:description>
      <video:content_loc>https://www.ospreylang.dev/assets/videos/osprey-navier-stokes-proof.mp4</video:content_loc>
      <video:duration>138</video:duration>
      <video:publication_date>2026-10-30T15:01:32+11:00</video:publication_date>
      <video:family_friendly>yes</video:family_friendly>
      <video:requires_subscription>no</video:requires_subscription>
      <video:live>no</video:live>
      <video:tag>Osprey</video:tag>
      <video:tag>proofs</video:tag>
      <video:tag>Navier-Stokes: computation and proof</video:tag>
      <video:tag>programmers</video:tag>
    </video:video>
  </url>
  <url>
    <loc>https://www.ospreylang.dev/docs/proofs/videos/dependent-types-math/</loc>
    <video:video>
      <video:thumbnail_loc>https://www.ospreylang.dev/assets/videos/osprey-dependent-types-math-poster.jpg</video:thumbnail_loc>
      <video:title>What are dependent types?: for mathematicians</video:title>
      <video:description>Types can describe facts about values. Start with a list-length example, then watch Osprey check an actual identity proof. This version is for mathematicians.</video:description>
      <video:content_loc>https://www.ospreylang.dev/assets/videos/osprey-dependent-types-math.mp4</video:content_loc>
      <video:duration>106</video:duration>
      <video:publication_date>2026-10-30T09:15:06+11:00</video:publication_date>
      <video:family_friendly>yes</video:family_friendly>
      <video:requires_subscription>no</video:requires_subscription>
      <video:live>no</video:live>
      <video:tag>Osprey</video:tag>
      <video:tag>proofs</video:tag>
      <video:tag>What are dependent types?</video:tag>
      <video:tag>mathematicians</video:tag>
    </video:video>
  </url>
  <url>
    <loc>https://www.ospreylang.dev/docs/proofs/videos/osprey-proof-kernel-math/</loc>
    <video:video>
      <video:thumbnail_loc>https://www.ospreylang.dev/assets/videos/osprey-proof-kernel-math-poster.jpg</video:thumbnail_loc>
      <video:title>Inside a small proof kernel: for mathematicians</video:title>
      <video:description>Follow a statement and its evidence through the proof kernel written in Osprey. This version is for mathematicians.</video:description>
      <video:content_loc>https://www.ospreylang.dev/assets/videos/osprey-proof-kernel-math.mp4</video:content_loc>
      <video:duration>119</video:duration>
      <video:publication_date>2026-10-30T09:27:43+11:00</video:publication_date>
      <video:family_friendly>yes</video:family_friendly>
      <video:requires_subscription>no</video:requires_subscription>
      <video:live>no</video:live>
      <video:tag>Osprey</video:tag>
      <video:tag>proofs</video:tag>
      <video:tag>How Osprey checks a proof</video:tag>
      <video:tag>mathematicians</video:tag>
    </video:video>
  </url>
  <url>
    <loc>https://www.ospreylang.dev/docs/proofs/videos/proof-workbench-math/</loc>
    <video:video>
      <video:thumbnail_loc>https://www.ospreylang.dev/assets/videos/osprey-proof-workbench-math-poster.jpg</video:thumbnail_loc>
      <video:title>The proof workbench: goals and evidence: for mathematicians</video:title>
      <video:description>Write a small argument, inspect hypotheses and goals, and complete a guided exercise in the real Workbench. This version is for mathematicians.</video:description>
      <video:content_loc>https://www.ospreylang.dev/assets/videos/osprey-proof-workbench-math.mp4</video:content_loc>
      <video:duration>110</video:duration>
      <video:publication_date>2026-10-30T09:22:28+11:00</video:publication_date>
      <video:family_friendly>yes</video:family_friendly>
      <video:requires_subscription>no</video:requires_subscription>
      <video:live>no</video:live>
      <video:tag>Osprey</video:tag>
      <video:tag>proofs</video:tag>
      <video:tag>Use the Proof Workbench</video:tag>
      <video:tag>mathematicians</video:tag>
    </video:video>
  </url>
  <url>
    <loc>https://www.ospreylang.dev/docs/proofs/videos/mathlib-bridge-math/</loc>
    <video:video>
      <video:thumbnail_loc>https://www.ospreylang.dev/assets/videos/osprey-mathlib-bridge-math-poster.jpg</video:thumbnail_loc>
      <video:title>Osprey rechecks imported mathematical proofs: for mathematicians</video:title>
      <video:description>See selected imported proofs checked in Osprey and learn how the actual Mathlib Euclid import is progressing. This version is for mathematicians.</video:description>
      <video:content_loc>https://www.ospreylang.dev/assets/videos/osprey-mathlib-bridge-math.mp4</video:content_loc>
      <video:duration>172</video:duration>
      <video:publication_date>2026-10-30T15:08:15+11:00</video:publication_date>
      <video:family_friendly>yes</video:family_friendly>
      <video:requires_subscription>no</video:requires_subscription>
      <video:live>no</video:live>
      <video:tag>Osprey</video:tag>
      <video:tag>proofs</video:tag>
      <video:tag>The Mathlib port is underway</video:tag>
      <video:tag>mathematicians</video:tag>
    </video:video>
  </url>
  <url>
    <loc>https://www.ospreylang.dev/docs/proofs/videos/proofs-that-say-no-math/</loc>
    <video:video>
      <video:thumbnail_loc>https://www.ospreylang.dev/assets/videos/osprey-proofs-that-say-no-math-poster.jpg</video:thumbnail_loc>
      <video:title>Rejection is part of the proof: for mathematicians</video:title>
      <video:description>Compare a valid proof with deliberately corrupted evidence and a false replacement statement. This version is for mathematicians.</video:description>
      <video:content_loc>https://www.ospreylang.dev/assets/videos/osprey-proofs-that-say-no-math.mp4</video:content_loc>
      <video:duration>105</video:duration>
      <video:publication_date>2026-10-30T09:15:48+11:00</video:publication_date>
      <video:family_friendly>yes</video:family_friendly>
      <video:requires_subscription>no</video:requires_subscription>
      <video:live>no</video:live>
      <video:tag>Osprey</video:tag>
      <video:tag>proofs</video:tag>
      <video:tag>A proof checker must say no</video:tag>
      <video:tag>mathematicians</video:tag>
    </video:video>
  </url>
  <url>
    <loc>https://www.ospreylang.dev/docs/proofs/videos/navier-stokes-proof-math/</loc>
    <video:video>
      <video:thumbnail_loc>https://www.ospreylang.dev/assets/videos/osprey-navier-stokes-proof-math-poster.jpg</video:thumbnail_loc>
      <video:title>Navier-Stokes: the published solution, then an exact flow: for mathematicians</video:title>
      <video:description>Understand OpenAI&#39;s published Navier-Stokes solution and Lean formalization, then explore a real Osprey fluid calculation and checked Workbench exercise. This version is for mathematicians.</video:description>
      <video:content_loc>https://www.ospreylang.dev/assets/videos/osprey-navier-stokes-proof-math.mp4</video:content_loc>
      <video:duration>145</video:duration>
      <video:publication_date>2026-10-30T15:11:05+11:00</video:publication_date>
      <video:family_friendly>yes</video:family_friendly>
      <video:requires_subscription>no</video:requires_subscription>
      <video:live>no</video:live>
      <video:tag>Osprey</video:tag>
      <video:tag>proofs</video:tag>
      <video:tag>Navier-Stokes: computation and proof</video:tag>
      <video:tag>mathematicians</video:tag>
    </video:video>
  </url>
  <url>
    <loc>https://www.ospreylang.dev/docs/tutorials/profiler/</loc>
    <video:video>
      <video:thumbnail_loc>https://www.ospreylang.dev/assets/videos/osprey-profiler-poster.jpg</video:thumbnail_loc>
      <video:title>Profiling Osprey programs in VS Code: CPU, memory and leaks</video:title>
      <video:description>A four-minute tutorial. Read two sample programs and predict where the time goes, then profile them in VS Code, read the flame graph and the heat on the source, attach to a running program, compare Osprey&#39;s memory backends, and check for leaks with ARC.</video:description>
      <video:content_loc>https://www.ospreylang.dev/assets/videos/osprey-profiler.mp4</video:content_loc>
      <video:duration>256</video:duration>
      <video:publication_date>2026-10-23T15:26:00+11:00</video:publication_date>
      <video:family_friendly>yes</video:family_friendly>
      <video:requires_subscription>no</video:requires_subscription>
      <video:live>no</video:live>
      <video:tag>Osprey</video:tag>
      <video:tag>profiler</video:tag>
      <video:tag>CPU profiling</video:tag>
      <video:tag>flame graph</video:tag>
      <video:tag>VS Code</video:tag>
      <video:tag>memory management</video:tag>
      <video:tag>ARC</video:tag>
      <video:tag>leak detection</video:tag>
    </video:video>
  </url>
  <url>
    <loc>https://www.ospreylang.dev/docs/tutorials/swift-interop/</loc>
    <video:video>
      <video:thumbnail_loc>https://www.ospreylang.dev/assets/videos/osprey-swift-interop-poster.jpg</video:thumbnail_loc>
      <video:title>Osprey exports and externs: one app for the Mac and iPhone with Swift</video:title>
      <video:description>A four-minute tutorial. Osprey exports compile to a C header that Swift calls, Swift @_cdecl functions become Osprey externs, an effect keeps the boundary testable, and one Xcode target ships the app to the Mac and the iPhone. Then the Osprey tests, and an edit to the hidden-files rule that they catch.</video:description>
      <video:content_loc>https://www.ospreylang.dev/assets/videos/osprey-swift-interop.mp4</video:content_loc>
      <video:duration>261</video:duration>
      <video:publication_date>2026-10-20T20:32:57+11:00</video:publication_date>
      <video:family_friendly>yes</video:family_friendly>
      <video:requires_subscription>no</video:requires_subscription>
      <video:live>no</video:live>
      <video:tag>Osprey</video:tag>
      <video:tag>Swift</video:tag>
      <video:tag>SwiftUI</video:tag>
      <video:tag>macOS</video:tag>
      <video:tag>iOS</video:tag>
      <video:tag>C interop</video:tag>
      <video:tag>@_cdecl</video:tag>
      <video:tag>Xcode</video:tag>
      <video:tag>algebraic effects</video:tag>
    </video:video>
  </url>
  <url>
    <loc>https://www.ospreylang.dev/docs/osprey-native/agent/</loc>
    <video:video>
      <video:thumbnail_loc>https://www.ospreylang.dev/assets/videos/osprey-agent-native-poster.jpg</video:thumbnail_loc>
      <video:title>Osprey Agent: a native coding agent in action</video:title>
      <video:description>Watch the real macOS SwiftUI agent: inspect failed tests, review an edit and its successful verification, then read the corrected code. Narrated walkthrough of a recorded calculator conversation, with native controls and AOT Osprey application logic.</video:description>
      <video:content_loc>https://www.ospreylang.dev/assets/videos/osprey-agent-native.mp4</video:content_loc>
      <video:duration>80</video:duration>
      <video:publication_date>2026-11-03T18:48:19+11:00</video:publication_date>
      <video:family_friendly>yes</video:family_friendly>
      <video:requires_subscription>no</video:requires_subscription>
      <video:live>no</video:live>
      <video:tag>Osprey Native</video:tag>
      <video:tag>SwiftUI</video:tag>
      <video:tag>AI coding agent</video:tag>
      <video:tag>AOT</video:tag>
      <video:tag>native applications</video:tag>
    </video:video>
  </url>
  <url>
    <loc>https://www.ospreylang.dev/docs/tutorials/chromecast-from-mac/</loc>
    <video:video>
      <video:thumbnail_loc>https://www.ospreylang.dev/assets/videos/osprey-chromecast-from-mac-poster.jpg</video:thumbnail_loc>
      <video:title>Osprey effects for I/O: a Chromecast sender you can test with no TV</video:title>
      <video:description>A seven-minute tutorial. Write every byte of input and output as one Osprey effect, return failures as Result, answer the effect with a real handler in the app and a fake one in tests. The worked example is the @osprey/chromecast package and the casting player: discovery, the CAST v2 frame format, serving the file, the app&#39;s adapter, eight tests with no TV, and an edit the tests catch.</video:description>
      <video:content_loc>https://www.ospreylang.dev/assets/videos/osprey-chromecast-from-mac.mp4</video:content_loc>
      <video:duration>441</video:duration>
      <video:publication_date>2026-11-01T13:40:00+11:00</video:publication_date>
      <video:family_friendly>yes</video:family_friendly>
      <video:requires_subscription>no</video:requires_subscription>
      <video:live>no</video:live>
      <video:tag>Osprey</video:tag>
      <video:tag>Chromecast</video:tag>
      <video:tag>Google TV</video:tag>
      <video:tag>macOS</video:tag>
      <video:tag>casting</video:tag>
      <video:tag>GPUI</video:tag>
    </video:video>
  </url>
  <url>
    <loc>https://www.ospreylang.dev/docs/tutorials/rust-ui-framework-without-rust/</loc>
    <video:video>
      <video:thumbnail_loc>https://www.ospreylang.dev/assets/videos/osprey-rust-ui-framework-without-rust-poster.jpg</video:thumbnail_loc>
      <video:title>GPUI apps in Osprey: a Rust UI framework without writing Rust</video:title>
      <video:description>A five-minute tutorial. GPUI&#39;s own painting example ported to Osprey, file by file: the two-function boundary the Rust host calls, the store, the drawing rules and the view. Then its tests and headless self-test with no window, and an edit to the dash pattern that one test catches.</video:description>
      <video:content_loc>https://www.ospreylang.dev/assets/videos/osprey-rust-ui-framework-without-rust.mp4</video:content_loc>
      <video:duration>311</video:duration>
      <video:publication_date>2026-11-01T13:40:00+11:00</video:publication_date>
      <video:family_friendly>yes</video:family_friendly>
      <video:requires_subscription>no</video:requires_subscription>
      <video:live>no</video:live>
      <video:tag>Osprey</video:tag>
      <video:tag>GPUI</video:tag>
      <video:tag>Rust</video:tag>
      <video:tag>UI framework</video:tag>
      <video:tag>state machines</video:tag>
      <video:tag>Osprey Native</video:tag>
    </video:video>
  </url>
  <url>
    <loc>https://www.ospreylang.dev/docs/tutorials/static-typing-python/</loc>
    <video:video>
      <video:thumbnail_loc>https://www.ospreylang.dev/assets/videos/osprey-static-typing-python-poster.jpg</video:thumbnail_loc>
      <video:title>Type inference in the Osprey Python flavor: static types with no hints</video:title>
      <video:description>A five-minute tutorial. Python-style code with no annotations, type-checked before it runs: a small sample, the error a wrong argument gives, records, Result and match, effects, and the @osprey/chromecast package checked against CPython. Then one edit that mixes two return types, caught at compile time.</video:description>
      <video:content_loc>https://www.ospreylang.dev/assets/videos/osprey-static-typing-python.mp4</video:content_loc>
      <video:duration>290</video:duration>
      <video:publication_date>2026-11-01T13:40:00+11:00</video:publication_date>
      <video:family_friendly>yes</video:family_friendly>
      <video:requires_subscription>no</video:requires_subscription>
      <video:live>no</video:live>
      <video:tag>Osprey</video:tag>
      <video:tag>Python flavor</video:tag>
      <video:tag>static typing</video:tag>
      <video:tag>type inference</video:tag>
      <video:tag>Python</video:tag>
    </video:video>
  </url>
  <url>
    <loc>https://www.ospreylang.dev/docs/tutorials/ui-testing-by-label/</loc>
    <video:video>
      <video:thumbnail_loc>https://www.ospreylang.dev/assets/videos/osprey-ui-testing-by-label-poster.jpg</video:thumbnail_loc>
      <video:title>Testing Osprey apps by label with @osprey/uitest</video:title>
      <video:description>A six-minute tutorial. Where a control&#39;s role and label come from, how @osprey/native builds the accessibility tree, how @osprey/uitest finds controls by label and drives them with real pointer events, a whole journey from the casting player&#39;s tests, and an edit that renames one label and fails three tests.</video:description>
      <video:content_loc>https://www.ospreylang.dev/assets/videos/osprey-ui-testing-by-label.mp4</video:content_loc>
      <video:duration>377</video:duration>
      <video:publication_date>2026-11-01T13:40:00+11:00</video:publication_date>
      <video:family_friendly>yes</video:family_friendly>
      <video:requires_subscription>no</video:requires_subscription>
      <video:live>no</video:live>
      <video:tag>Osprey</video:tag>
      <video:tag>UI testing</video:tag>
      <video:tag>accessibility</video:tag>
      <video:tag>AI agents</video:tag>
      <video:tag>end-to-end tests</video:tag>
    </video:video>
  </url>
</urlset>
