Skip to main content

๐Ÿง€ Qise

AI-First Runtime Security Framework for AI Agents

Python 3.11+ License: CC BY-NC-SA 4.0 Tests: 461+ passed Guards: 14 Adapters: 5 Desktop: Tauri 2

English | ไธญๆ–‡


Overview

Qise (pronounced "Cheese" ๐Ÿง€) is an open-source runtime security framework that protects AI agents from both directions:

  • World โ†’ Agent: Stops prompt injection, tool poisoning, memory/KB tampering, and supply chain attacks
  • Agent โ†’ World: Stops dangerous commands, path traversal, SSRF, data exfiltration, and policy violations

Unlike rule-only solutions that are easily bypassed, Qise uses layered AI models (SLM fast-screen + LLM deep analysis) to understand attack intent, with deterministic rules as fast-path and fallback โ€” never fail-open.

System Architecture

Agent (Claude Code / Codex / Gemini CLI / Custom)
    โ”‚
    โ”‚ API Request (OpenAI-compatible format)
    โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                Tauri 2 Desktop App                       โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚  System Tray โ”‚ Guard Dashboard โ”‚ Config Editor    โ”‚  โ”‚
โ”‚  โ”‚  Agent Panel โ”‚ Event Log (WS)  โ”‚ Stats Bar        โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  Rust Proxy (axum, port 8822)                           โ”‚
โ”‚  โ€ข Request/Response interception                        โ”‚
โ”‚  โ€ข SSE streaming passthrough                            โ”‚
โ”‚  โ€ข Guard pipeline integration                           โ”‚
โ”‚  โ€ข Proxy Takeover (env + config file)                   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  Python Bridge (aiohttp, port 8823)                     โ”‚
โ”‚  โ€ข Guard Pipeline execution                             โ”‚
โ”‚  โ€ข SLM/LLM inference (httpx)                            โ”‚
โ”‚  โ€ข WebSocket event push (/v1/bridge/events/stream)      โ”‚
โ”‚  โ€ข 7 HTTP endpoints + 1 WS endpoint                     โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  Guard Pipeline (14 Guards)                             โ”‚
โ”‚  Ingress: Prompt โ†’ ToolSanity โ†’ Context โ†’ SupplyChain  โ”‚
โ”‚  Egress:  Command โ†’ FS โ†’ Network โ†’ Exfil โ†’ Resource    โ”‚
โ”‚  Output:  Credential โ†’ Audit โ†’ Output                   โ”‚
โ”‚  Soft:    SecurityContextProvider + ReasoningGuard       โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  Model Layer                                            โ”‚
โ”‚  SLM: Ollama qwen3:4b (local, <2s)                     โ”‚
โ”‚  LLM: Cloud API (Claude/GPT/Qwen, <5s)                  โ”‚
โ”‚  Rules: Deterministic fallback (<1ms)                    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
    โ”‚
    โ”‚ Forwarded Request
    โ–ผ
  Upstream LLM API

Quick Start

1. Install Python Engine

# Clone and install
git clone https://github.com/morinop/qise.git
cd qise
pip install -e ".[dev]"

2. One-Command Setup

# Generate default config
qise init

# Check a tool call
qise check bash '{"command": "rm -rf /"}'
# โ†’ {"verdict": "block", "blocked_by": "command", ...}

qise check bash '{"command": "ls"}'
# โ†’ {"verdict": "pass", "blocked_by": null, "warnings": []}

# List all guards and their modes
qise guards

3. Setup Local SLM (Recommended)

Qise works out-of-the-box with rules only, but AI-first guards need an SLM. Local Ollama gives <2s latency:

# One-click: install Ollama + pull qwen3:4b (~2.4GB)
chmod +x scripts/setup_slm.sh
./scripts/setup_slm.sh

Or manually:

curl -fsSL https://ollama.com/install.sh | sh
ollama pull qwen3:4b
ollama serve

Then configure shield.yaml:

models:
  slm:
    base_url: "http://localhost:11434/v1"
    model: "qwen3:4b"
    timeout_ms: 5000

4. Zero-Code: Proxy Mode

Start a local HTTP proxy that intercepts all Agentโ†”LLM traffic:

# Start proxy server
qise proxy start --port 8822 --upstream https://api.openai.com

# Point your agent at the proxy
export OPENAI_API_BASE="http://localhost:8822/v1"

The proxy intercepts requests/responses in real-time, running all 14 guards on tool calls, injection attempts, and output leaks โ€” with SSE streaming support for zero-latency text passthrough.

5. Desktop App (One-Click Security)

The Qise desktop app provides a one-click security toggle with real-time monitoring:

# Prerequisites: Node.js + Rust
cd src-tauri && cargo tauri dev

Features:

  • System Tray: One-click protection toggle, status indicator, menu text auto-switches
  • Guard Dashboard: Real-time guard events, mode switching (observe/enforce/off)
  • Config Editor: Visual shield.yaml editing (SLM, LLM, Guards, Integration)
  • Agent Panel: Detect installed agents, one-click proxy takeover with crash recovery
  • Event Log: WebSocket real-time push, filter by All/Blocked/Warnings
  • Stats Bar: Blocked/warning counts, SLM status (local/cloud/unavailable), latency

Proxy Takeover: Click "Take Over" to redirect your agent's API endpoint to the Qise proxy. Original config is backed up and auto-restored on exit or crash.

Agent Method Redirect Target
Generic OpenAI OPENAI_API_BASE env var http://localhost:8822/v1
Claude Code ANTHROPIC_BASE_URL env var + ~/.claude/settings.json http://localhost:8822/v1

6. Zero-Code: MCP Mode

Add to your agent's MCP configuration:

{
  "mcpServers": {
    "qise": {
      "command": "python",
      "args": ["-m", "qise.mcp_server"]
    }
  }
}

7. SDK Mode: Framework Adapters

Nanobot:

from qise import Shield
from qise.adapters.nanobot import QiseNanobotHook

shield = Shield.from_config()
hook = QiseNanobotHook(shield)
loop = AgentLoop(hooks=[hook])

LangGraph:

from qise import Shield
from qise.adapters.langgraph import QiseLangGraphWrapper

shield = Shield.from_config()
wrapper = QiseLangGraphWrapper(shield)
safe_tools = [wrapper.wrap_tool_call(tool) for tool in my_tools]

NexAU:

from qise import Shield
from qise.adapters.nexau import QiseNexauMiddleware

shield = Shield.from_config()
middleware = QiseNexauMiddleware(shield)
agent = NexAUAgent(middlewares=[middleware])

OpenAI Agents SDK:

from qise import Shield
from qise.adapters.openai_agents import QiseOpenAIAgentsGuardrails

shield = Shield.from_config()
guardrails = QiseOpenAIAgentsGuardrails(shield)
agent = Agent(guardrails=[guardrails.input_guardrail, guardrails.output_guardrail])

Hermes:

from qise import Shield
from qise.adapters.hermes import QiseHermesPlugin

shield = Shield.from_config()
plugin = QiseHermesPlugin(shield)
plugin.register(ctx)

Why Qise

Problem Qise's Approach
Keyword rules easily bypassed AI understands attack semantics, not just pattern matching
Single model bottleneck Layered models: SLM <50ms fast-screen + LLM deep analysis
Fail-open on model errors Rule fallback โ€” never fail-open
No exfiltration detection ExfilGuard: AI-first data exfiltration detection
No tool poisoning detection ToolSanityGuard: hash baseline + AI semantic analysis
Static safety instructions Dynamic SecurityContextProvider + Guard enforcement
Requires code changes Proxy mode / MCP mode: zero-code integration
Cloud SLM latency 14-30s Local Ollama qwen3:4b: <2s per call

Three-Layer Decision Flow

Every guard uses the same decision flow โ€” rules first for speed, AI for semantics, rules last for safety:

  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
  โ”‚ Rule Fast-Path   โ”‚  <1ms โ€” deterministic BLOCK or PASS
  โ”‚ (regex, hash,    โ”‚  e.g., "rm -rf /" โ†’ BLOCK
  โ”‚  patterns)       โ”‚  For AI-first guards, only BLOCK short-circuits
  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  (rule PASS flows to SLM for final say)
           โ”‚ uncertain or PASS (AI-first guards)
           โ–ผ
  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
  โ”‚ SLM Fast-Screen  โ”‚  <2s (local Ollama) โ€” semantic classification
  โ”‚ (โ‰ค4B model)      โ”‚  e.g., obfuscated command โ†’ BLOCK
  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  e.g., paraphrased injection โ†’ ESCALATE
           โ”‚ SLM can override low-confidence rule WARNs (<0.65)
           โ”‚ but not high-confidence ones (โ‰ฅ0.65)
           โ–ผ
  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
  โ”‚ LLM Deep Analysisโ”‚  <2s โ€” full trajectory reasoning
  โ”‚ (8B-70B model)   โ”‚  e.g., multi-turn attack chain โ†’ BLOCK
  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
           โ”‚ model unavailable
           โ–ผ
  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
  โ”‚ Rule Fallback    โ”‚  <1ms โ€” conservative defaults
  โ”‚ (never fail-open)โ”‚  e.g., WARN on uncertain + network tool
  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Defense in Depth

  Layer 0: SecurityContextProvider  โ†’  Agent follows voluntarily (~80%)
  Layer 1: ReasoningGuard          โ†’  Chain-of-thought monitoring + threshold adjustment
  Layer 2: Guard Pipeline (14)     โ†’  Rule โ†’ SLM โ†’ LLM โ†’ Rule fallback
  Layer 3: OutputGuard + CredentialGuard  โ†’  Data leak detection

14 Guards at a Glance

Ingress Pipeline (World โ†’ Agent)

Guard Strategy Detects
PromptGuard AI-first (80/20) Indirect injection, multi-turn attacks, context poisoning
ToolSanityGuard AI-first (80/20) Tool description poisoning, rug pulls, name shadowing
ContextGuard AI+hash (70/30) Memory/KB poisoning, data tampering, hash integrity
SupplyChainGuard AI+rules (60/40) Malicious Skills, MCP tampering, source verification

Egress Pipeline (Agent โ†’ World)

Guard Strategy Detects
ReasoningGuard * AI-only (100/0) Manipulation traces in chain-of-thought, threshold adjustment
CommandGuard Rules+AI (70/30) Shell injection, dangerous commands, privilege escalation
FilesystemGuard Rules (90/10) Path traversal, workspace violations, system dir access
NetworkGuard Rules (90/10) SSRF, forbidden domains, internal network scanning
ExfilGuard AI-first (80/20) Data exfiltration, covert channels, DNS exfil
ResourceGuard Rules+AI (60/40) Infinite loops, budget overruns, circuit breaker
ToolPolicyGuard Rules (100/0) Unauthorized tool access, deny/approval/owner-only

Output Pipeline (Audit)

Guard Strategy Detects
CredentialGuard Rules (100/0) API keys, secrets, tokens in output
AuditGuard AI+rules (50/50) Attack chain reconstruction, session risk scoring
OutputGuard AI+rules (70/30) PII exposure, KB content leaks, credential leaks

* ReasoningGuard is cross-cutting โ€” detects manipulation in chain-of-thought and adjusts thresholds of other guards.

5 Framework Adapters

Framework Ingress Egress Output SecContext
Nanobot โœ… โœ… โœ… โœ…
Hermes โœ… โœ… โœ… โ€”
NexAU โœ… โœ… โœ… โœ…
LangGraph โ€” โœ… โ€” โœ…
OpenAI Agents โœ… โœ… โœ… โ€”

All adapters use IngressCheckMixin + EgressCheckMixin โ€” no monkey-patching, only official Hook/Plugin/Middleware APIs.

Configuration (shield.yaml)

version: "1.0"

integration:
  mode: proxy          # proxy | mcp | sdk
  proxy:
    port: 8822
    auto_takeover: true
    crash_recovery: true

models:
  slm:
    base_url: "http://localhost:11434/v1"   # Ollama
    model: "qwen3:4b"
    timeout_ms: 5000
  llm:
    base_url: "https://api.anthropic.com"
    model: "claude-sonnet-4-5"
    timeout_ms: 5000

guards:
  enabled: [prompt, command, credential, reasoning, filesystem, network,
            exfil, resource, audit, tool_sanity, context, output, tool_policy, supply_chain]
  config:
    prompt:
      mode: observe           # observe | enforce | off
      slm_confidence_threshold: 0.7
      skip_slm_on_rule_pass: false
    command:
      mode: enforce
    exfil:
      mode: observe
      skip_slm_on_rule_pass: true
      slm_override_rule_warn_threshold: 0.8

Environment variable overrides: QISE_SLM_BASE_URL, QISE_SLM_MODEL, QISE_SLM_API_KEY, QISE_LLM_BASE_URL, QISE_PROXY_PORT, QISE_MODE.

Performance

Operation Target Measured (p95)
Rule fast-path (single guard) <1ms ~0.02ms
Full egress pipeline (6 guards) <10ms ~0.02ms
Local SLM (Ollama qwen3:4b) <2s ~500ms-2s (M1+)
Full pipeline + local SLM <3s ~1-2s

Scripts

Script Description
scripts/setup_slm.sh Install Ollama + pull qwen3:4b (one-click local SLM)
scripts/benchmark_slm.py Compare local Ollama vs cloud SLM latency
scripts/e2e_tauri_test.py End-to-end verification: Proxy โ†’ Bridge โ†’ Guard โ†’ API

Development

pip install -e ".[dev]"     # Install with dev dependencies
pytest tests/ -v             # Run 461+ tests
ruff check .                 # Lint
ruff format .                # Format
mypy src/qise               # Type check
cd src-tauri && cargo tauri dev    # Run desktop app
cd src-tauri && cargo tauri build  # Build desktop app

Evaluation Results

R12-tuned evaluation (SLM + rules pipeline vs rules-only baseline):

Metric Rules-Only SLM + Rules Delta
Precision 0.643 1.000 +0.357
Recall 0.973 1.000 +0.027
F1 0.774 1.000 +0.226
FPR 0.400 0.000 +0.400 (lower=better)

Architecture

qise/
โ”œโ”€โ”€ src/qise/
โ”‚   โ”œโ”€โ”€ core/              # GuardContext, AIGuardBase, Pipeline, Shield, Config
โ”‚   โ”œโ”€โ”€ guards/            # 14 Guard implementations
โ”‚   โ”œโ”€โ”€ models/            # ModelRouter (httpx-based OpenAI-compatible client)
โ”‚   โ”œโ”€โ”€ data/              # ThreatPatternLoader + BaselineManager + SQLite
โ”‚   โ”œโ”€โ”€ providers/         # SecurityContextProvider (DSL template rendering)
โ”‚   โ”œโ”€โ”€ adapters/          # 5 Framework adapters
โ”‚   โ”œโ”€โ”€ proxy/             # HTTP proxy server (aiohttp + SSE)
โ”‚   โ”œโ”€โ”€ bridge/            # Python Bridge (7 HTTP + 1 WS endpoint)
โ”‚   โ””โ”€โ”€ mcp_server.py      # MCP Server (4 security check tools)
โ”œโ”€โ”€ src-tauri/             # Desktop App (Tauri 2 + React)
โ”‚   โ”œโ”€โ”€ src/               #   Rust backend (proxy, bridge, takeover, 12 IPC commands)
โ”‚   โ””โ”€โ”€ icons/             #   App icons
โ”œโ”€โ”€ src-ui/                # React frontend (Raycast-style dark UI)
โ”‚   โ””โ”€โ”€ src/components/    #   StatusIndicator, ProxyToggle, GuardList, EventLog,
โ”‚                          #   AgentPanel, ConfigPanel
โ”œโ”€โ”€ scripts/               # setup_slm.sh, benchmark_slm.py, e2e_tauri_test.py
โ”œโ”€โ”€ data/                  # threat_patterns/, security_contexts/, prompts/
โ”œโ”€โ”€ tests/                 # 461+ tests
โ”œโ”€โ”€ eval/                  # Evaluation datasets and results
โ””โ”€โ”€ docs/                  # Architecture, Guards, Threat Model, Integration

CLI Reference

qise check bash '{"command": "rm -rf /"}'  # Single security check
qise serve                                  # Start MCP Server
qise proxy start --port 8822                # Start Rust HTTP proxy
qise bridge start --port 8823               # Start Python Bridge
qise init                                   # Generate shield.yaml
qise guards                                 # List registered guards
qise adapters                               # List framework adapters
qise context bash                           # Get security context
qise version                                # Print version

Integration Modes

Mode Code Required Defense Depth Best For
Proxy Mode 0 lines Full (4 layers) Desktop users, non-developers
MCP Mode 0 lines Hard defense (14 guards) MCP ecosystem users
SDK Mode 1-5 lines Full (4 layers) + lowest latency Agent developers

Status

Component Status
Core engine (AIGuardBase, Pipeline, Shield) โœ… Complete
14 Guards (Ingress + Egress + Output) โœ… Complete
ModelRouter (httpx-based SLM/LLM client) โœ… Complete
Ollama SLM integration (qwen3:4b, <2s) โœ… Complete
Rust Proxy (axum + hyper + rustls, SSE streaming) โœ… Complete
Python Bridge (aiohttp, 7 HTTP + 1 WS endpoint) โœ… Complete
Desktop App (Tauri 2, System Tray, Config Editor) โœ… Complete
Proxy Takeover (env + config file + crash recovery) โœ… Complete
Real-time Frontend (GuardList, EventLog, AgentPanel, ConfigPanel) โœ… Complete
5 Framework Adapters (Nanobot, Hermes, NexAU, LangGraph, OpenAI Agents) โœ… Complete
MCP Server (4 security check tools) โœ… Complete
SecurityContextProvider (DSL template rendering) โœ… Complete
BaselineManager (SHA-256 hash + SQLite) โœ… Complete
461+ unit + integration + performance tests โœ… Complete
OpenAI Agents SDK E2E Test (10/10 passed) โœ… Complete

License

CC BY-NC-SA 4.0 โ€” Free for personal, academic, and non-commercial use. Commercial use requires separate permission.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qise-0.2.0.tar.gz (873.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

qise-0.2.0-py3-none-any.whl (138.7 kB view details)

Uploaded Python 3

File details

Details for the file qise-0.2.0.tar.gz.

File metadata

  • Download URL: qise-0.2.0.tar.gz
  • Upload date:
  • Size: 873.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for qise-0.2.0.tar.gz
Algorithm Hash digest
SHA256 69a8df51dc89af7d2dc2866b004556ba7143d14921bcd24e4791dd345c55a5a3
MD5 a9781fbe3e74868de936c351842e9548
BLAKE2b-256 baac49ee4921d24e4ad1be5cc1434df98c019d3b7ff688b511568733eb6a896e

See more details on using hashes here.

Provenance

The following attestation bundles were made for qise-0.2.0.tar.gz:

Publisher: workflow.yml on WhitzardAgent/qise

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file qise-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: qise-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 138.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for qise-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 15bed8b0213a2e20fe1f6424f569f36ae983d21f70a9edfb26a22fca9d499590
MD5 939c638d7e6ea804c010929cd5065328
BLAKE2b-256 52f855040fbc62bbc0f59c09b47801b7b6220bcbd835806f7311f07aa78ed169

See more details on using hashes here.

Provenance

The following attestation bundles were made for qise-0.2.0-py3-none-any.whl:

Publisher: workflow.yml on WhitzardAgent/qise

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page