<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: QObserva Labs</title>
    <description>The latest articles on Forem by QObserva Labs (@qobserva).</description>
    <link>https://forem.com/qobserva</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3864209%2F9c961513-9868-4645-bb5b-66346a1a77ad.png</url>
      <title>Forem: QObserva Labs</title>
      <link>https://forem.com/qobserva</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/qobserva"/>
    <language>en</language>
    <item>
      <title>Configuring observability for your Qiskit runs with QObserva</title>
      <dc:creator>QObserva Labs</dc:creator>
      <pubDate>Sat, 18 Apr 2026 19:36:58 +0000</pubDate>
      <link>https://forem.com/qobserva/configuring-observability-for-your-qiskit-runs-with-qobserva-480j</link>
      <guid>https://forem.com/qobserva/configuring-observability-for-your-qiskit-runs-with-qobserva-480j</guid>
      <description>&lt;p&gt;If you’re working with Qiskit, you’ve probably noticed something pretty quickly:&lt;/p&gt;

&lt;p&gt;Running circuits is straightforward.&lt;br&gt;
Understanding what changed between runs… is not.&lt;/p&gt;

&lt;p&gt;As experiments grow, context gets scattered—across notebooks, logs, and memory. That’s where QObserva fits in.&lt;/p&gt;

&lt;p&gt;This post walks through a focused, &lt;strong&gt;Qiskit-only setup&lt;/strong&gt; so you can start capturing structured telemetry from your runs with minimal changes.&lt;/p&gt;


&lt;h2&gt;
  
  
  Why add observability on top of Qiskit?
&lt;/h2&gt;

&lt;p&gt;Qiskit already gives you counts and raw results. But when you start iterating, a few gaps show up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It’s hard to compare runs over time&lt;/li&gt;
&lt;li&gt;Metadata (backend, parameters, noise) isn’t consistently tracked&lt;/li&gt;
&lt;li&gt;Context lives outside the code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;QObserva adds a lightweight layer to address this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;standard schema&lt;/strong&gt; across runs&lt;/li&gt;
&lt;li&gt;Derived metrics (entropy, dominance, efficiency)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dashboards&lt;/strong&gt; for comparing experiments&lt;/li&gt;
&lt;li&gt;A consistent way to tag and search runs&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  1. Install QObserva with Qiskit support
&lt;/h2&gt;

&lt;p&gt;If you’re starting with Qiskit only:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;qobserva
pip &lt;span class="nb"&gt;install &lt;/span&gt;qobserva-agent[qiskit]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you plan to explore other SDKs later:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;qobserva-agent[all-sdks]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  2. Start QObserva locally
&lt;/h2&gt;

&lt;p&gt;Once installed, bring up the local stack:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;qobserva up
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Keep this running while executing your Qiskit scripts.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Instrument your Qiskit run
&lt;/h2&gt;

&lt;p&gt;You don’t need to rewrite your workflow. Just wrap your existing run with &lt;code&gt;@observe_run&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;qobserva&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;observe_run&lt;/span&gt;

&lt;span class="nd"&gt;@observe_run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;project&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;qiskit_lab&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;tags&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;sdk&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;qiskit&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;algorithm&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;bell_state&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;backend&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ibmq_qasm_simulator&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;run_experiment&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;execute_quantum_circuit&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;run_experiment&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This captures run-level metadata automatically.&lt;br&gt;
Explore a sample qiskit simulation here - &lt;a href="https://github.com/BuildersArk/qobserva/blob/main/examples/qiskit_example.py" rel="noopener noreferrer"&gt;https://github.com/BuildersArk/qobserva/blob/main/examples/qiskit_example.py&lt;/a&gt; &lt;/p&gt;




&lt;h2&gt;
  
  
  4. Tagging Qiskit runs (what actually matters)
&lt;/h2&gt;

&lt;p&gt;Good observability starts with good tagging.&lt;/p&gt;

&lt;p&gt;A simple pattern:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;sdk&lt;/code&gt; → always &lt;code&gt;"qiskit"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;algorithm&lt;/code&gt; → &lt;code&gt;"vqe"&lt;/code&gt;, &lt;code&gt;"qaoa"&lt;/code&gt;, &lt;code&gt;"bell_state"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;backend&lt;/code&gt; → simulator or device name&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Optional but useful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;noise_model&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;optimizer&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ansatz&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Start simple—expand only when needed.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Exploring runs in the dashboard
&lt;/h2&gt;

&lt;p&gt;After running a few experiments:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Filter by &lt;code&gt;project="qiskit_lab"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Compare runs by &lt;code&gt;algorithm&lt;/code&gt; or &lt;code&gt;backend&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Observe how metrics evolve across iterations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where things become clearer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which changes actually mattered&lt;/li&gt;
&lt;li&gt;How different backends behave&lt;/li&gt;
&lt;li&gt;Where performance shifts occur&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Below are few sample screen shots from the dashboard:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Execution overview&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fecgslu25emn91o9yys8f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fecgslu25emn91o9yys8f.png" alt="Execution Overview" width="800" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run Details&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fveiuj54jsr2yqs28kc3i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fveiuj54jsr2yqs28kc3i.png" alt="Run Details" width="800" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Compare Runs&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd18mczx4o1eupdtprcrd.png" alt="Comparisons" width="800" height="394"&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  6. What this unlocks
&lt;/h2&gt;

&lt;p&gt;Even with a few runs instrumented, you’ll start to see patterns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Small parameter changes → measurable differences&lt;/li&gt;
&lt;li&gt;Backend choices → visible tradeoffs&lt;/li&gt;
&lt;li&gt;Experiments → easier to compare and reason about&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of reconstructing context, you have it captured upfront.&lt;/p&gt;




&lt;h2&gt;
  
  
  Explore QObserva
&lt;/h2&gt;

&lt;p&gt;If you’d like to go deeper or try this out in your own workflows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Website: &lt;a href="https://qobserva.dev" rel="noopener noreferrer"&gt;https://qobserva.dev&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/BuildersArk/qobserva" rel="noopener noreferrer"&gt;https://github.com/BuildersArk/qobserva&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The repository includes setup instructions, examples, and the latest updates as we continue to iterate on QObserva.&lt;/p&gt;




&lt;h2&gt;
  
  
  What’s next
&lt;/h2&gt;

&lt;p&gt;In upcoming posts, we’ll show how this pattern is applied to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amazon Braket&lt;/li&gt;
&lt;li&gt;Cirq&lt;/li&gt;
&lt;li&gt;PennyLane&lt;/li&gt;
&lt;li&gt;pyQuil&lt;/li&gt;
&lt;li&gt;D-Wave&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is to keep a &lt;strong&gt;single observability layer across all SDKs&lt;/strong&gt;, so comparisons become straightforward.&lt;/p&gt;

</description>
      <category>quantum</category>
      <category>qiskit</category>
      <category>qobserva</category>
      <category>python</category>
    </item>
    <item>
      <title>Quantum computing SDKs lack observability. We built QObserva to fix that.</title>
      <dc:creator>QObserva Labs</dc:creator>
      <pubDate>Thu, 09 Apr 2026 15:21:41 +0000</pubDate>
      <link>https://forem.com/qobserva/quantum-computing-sdks-lack-observability-we-built-qobserva-to-fix-that-3e96</link>
      <guid>https://forem.com/qobserva/quantum-computing-sdks-lack-observability-we-built-qobserva-to-fix-that-3e96</guid>
      <description>&lt;p&gt;Over the past few months, we’ve been working extensively with quantum SDKs like Qiskit, Cirq, and Amazon Braket. Building circuits and running jobs is becoming more accessible, but we kept running into the same friction point—not in execution, but in understanding what actually happened after a run.&lt;/p&gt;

&lt;p&gt;At a small scale, things feel manageable. You run a few experiments, inspect results, maybe store some outputs. But as soon as you start iterating—changing parameters, switching backends, or comparing runs over time—the workflow becomes harder to reason about. Context gets scattered across notebooks, logs, and ad-hoc scripts, and simple questions become surprisingly difficult to answer.&lt;/p&gt;




&lt;h2&gt;
  
  
  The problem: runs without context
&lt;/h2&gt;

&lt;p&gt;As workflows grow, we repeatedly ran into questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which backend produced this result?&lt;/li&gt;
&lt;li&gt;What changed between two runs?&lt;/li&gt;
&lt;li&gt;Why did performance drop this week?&lt;/li&gt;
&lt;li&gt;Are we comparing equivalent experiments across SDKs?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these questions are inherently complex. The issue is that the information needed to answer them isn’t captured in a structured way.&lt;/p&gt;

&lt;p&gt;Instead, context is spread across:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Notebooks&lt;/li&gt;
&lt;li&gt;Logs&lt;/li&gt;
&lt;li&gt;One-off scripts&lt;/li&gt;
&lt;li&gt;Memory (which doesn’t scale)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As a result, teams spend more time reconstructing what happened than actually improving their experiments.&lt;/p&gt;




&lt;h2&gt;
  
  
  This is a tooling gap, not a quantum problem
&lt;/h2&gt;

&lt;p&gt;In modern software systems, this problem was solved years ago through observability. Metrics, logs, and traces provide a clear picture of system behavior, and tools like Datadog or Prometheus make debugging and optimization straightforward.&lt;/p&gt;

&lt;p&gt;In quantum SDK workflows, that layer is still mostly missing.&lt;/p&gt;

&lt;p&gt;You can run experiments—but tracking, comparing, and explaining them is still largely manual.&lt;/p&gt;




&lt;h2&gt;
  
  
  What we wanted instead
&lt;/h2&gt;

&lt;p&gt;We weren’t looking for a heavy platform or something tied to a single SDK. We wanted something practical that fits into existing workflows.&lt;/p&gt;

&lt;p&gt;The requirements were simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Works across Python-based quantum SDKs&lt;/li&gt;
&lt;li&gt;Local-first (no mandatory cloud setup)&lt;/li&gt;
&lt;li&gt;Minimal friction to adopt&lt;/li&gt;
&lt;li&gt;Captures run-level metadata and metrics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most importantly, it needed to make experiments &lt;strong&gt;comparable and explainable over time&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Introducing QObserva
&lt;/h2&gt;

&lt;p&gt;QObserva is a lightweight observability layer for quantum SDK workflows.&lt;/p&gt;

&lt;p&gt;It captures structured telemetry for each run—metadata, tags, and metrics—so you can understand what happened without piecing together context manually.&lt;/p&gt;




&lt;h2&gt;
  
  
  Getting started
&lt;/h2&gt;

&lt;p&gt;You can set it up in a few minutes.&lt;/p&gt;

&lt;p&gt;Install:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;qobserva
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Start the local stack:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;qobserva up
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instrument your run:&lt;/p&gt;

&lt;p&gt;In this example we use a &lt;strong&gt;Qiskit &lt;code&gt;StatevectorSampler&lt;/code&gt;&lt;/strong&gt; to create a Bell-state run.&lt;br&gt;&lt;br&gt;
The same &lt;code&gt;@observe_run&lt;/code&gt; pattern works across other SDKs too (Braket, Cirq, PennyLane, pyQuil, D-Wave) by changing the &lt;code&gt;sdk&lt;/code&gt; tag and your SDK-specific run code.&lt;/p&gt;

&lt;p&gt;See:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/BuildersArk/qobserva/tree/main/docs" rel="noopener noreferrer"&gt;Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/BuildersArk/qobserva/tree/main/examples" rel="noopener noreferrer"&gt;Examples&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;qobserva&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;observe_run&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;qiskit&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;QuantumCircuit&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;qiskit.primitives&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;StatevectorSampler&lt;/span&gt;

&lt;span class="nd"&gt;@observe_run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;project&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;first_demo&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;tags&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;sdk&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;qiskit&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;algorithm&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;bell_state&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;benchmark_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;first_demo_bell_state&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;benchmark_params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;shots&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1024&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;target_bitstrings&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;00&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;11&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;run_algorithm&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;qc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;QuantumCircuit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;qc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;h&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;qc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cx&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;qc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;measure&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;

    &lt;span class="n"&gt;sampler&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;StatevectorSampler&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;job&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sampler&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;qc&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;shots&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1024&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;job&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;result&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Open the dashboard at:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://localhost:3000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You’ll immediately see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run metadata&lt;/li&gt;
&lt;li&gt;Tags and context&lt;/li&gt;
&lt;li&gt;Metrics across experiments&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;Video: &lt;a href="https://github.com/BuildersArk/qobserva/blob/main/docs/video/demo_qiskit_run.gif" rel="noopener noreferrer"&gt;https://github.com/BuildersArk/qobserva/blob/main/docs/video/demo_qiskit_run.gif&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FBuildersArk%2Fqobserva%2Fmain%2Fdocs%2Fvideo%2Fdemo_qiskit_run.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FBuildersArk%2Fqobserva%2Fmain%2Fdocs%2Fvideo%2Fdemo_qiskit_run.gif" width="560" height="315"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;Most quantum workflows today are still highly experimental. That makes clarity and iteration speed critical.&lt;/p&gt;

&lt;p&gt;Without observability:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You lose context between runs&lt;/li&gt;
&lt;li&gt;You repeat work unintentionally&lt;/li&gt;
&lt;li&gt;You spend time debugging setup instead of improving algorithms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even a small layer of structured visibility makes a noticeable difference.&lt;/p&gt;




&lt;h2&gt;
  
  
  What’s next
&lt;/h2&gt;

&lt;p&gt;QObserva is currently in &lt;strong&gt;beta&lt;/strong&gt;, and we’re shaping it based on real-world usage.&lt;/p&gt;

&lt;p&gt;If you’re working with quantum SDKs, we’d love to understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What you currently track&lt;/li&gt;
&lt;li&gt;What feels hardest to debug or compare&lt;/li&gt;
&lt;li&gt;What would actually save you time&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Try it out
&lt;/h2&gt;

&lt;p&gt;Learn More:&lt;br&gt;
&lt;a href="https://qobserva.com/" rel="noopener noreferrer"&gt;https://qobserva.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Repository:&lt;br&gt;
&lt;a href="https://github.com/BuildersArk/qobserva" rel="noopener noreferrer"&gt;https://github.com/BuildersArk/qobserva&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feedback and issues:&lt;br&gt;
&lt;a href="https://github.com/BuildersArk/qobserva/issues" rel="noopener noreferrer"&gt;https://github.com/BuildersArk/qobserva/issues&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Final thought
&lt;/h2&gt;

&lt;p&gt;We’re not trying to solve all of quantum computing.&lt;/p&gt;

&lt;p&gt;The goal is simpler: make it easier to understand what your code is doing when you run it.&lt;/p&gt;

&lt;p&gt;If that resonates, we’d love to hear your thoughts.&lt;/p&gt;

</description>
      <category>quantum</category>
      <category>qiskit</category>
      <category>braket</category>
      <category>python</category>
    </item>
  </channel>
</rss>
