Skip to content

See the truth about your APIs runi is an open-source API client that verifies what AI generates. When 46% of developers don't trust AI output (Stack Overflow 2025 Developer Survey), you need a second opinion. runi is that opinion.

License

Notifications You must be signed in to change notification settings

paulbreuler/runi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

122 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

runi

runi

See the truth about your APIs

An open-source API client that verifies what AI generates.
Local-first. Git-friendly. No account required. Ever.

Release CI Status License Stars Issues Pull Requests Coverage (min, PR gate) Discord

runi demo showing HTTP client interface, network history, and timing waterfall

Demo: HTTP client interface, network history panel, and timing waterfall visualization

InstallationWhy runi?FeaturesQuick StartProject StatusContributing


Pre-alpha. runi is under active development. The vision is solidifying, the foundations are being laid. Expect rough edges — and rapid evolution. Star the repo to follow along the learning journey.

This repo started as an experiment and will continue to push boundaries. It may not be for you. If you think handcrafted code is gold, you should travel back in time to a time when people had to punch cards to write code.

Feedback always welcome! Join the run if you wish, fork and PR.


The Problem

You're using AI to write API integration code. So is everyone else — 84% of developers now use AI tools, with 89% using generative AI in their workflow.

But here's what nobody talks about: 46% of developers don't trust the accuracy of AI output — up from 31% last year. The biggest frustration? 66% cite "solutions that are almost right, but not quite."

The tools generating code are getting better. The tools verifying that code? They don't exist.

Meanwhile, your HTTP client wants you to create an account, sync to their cloud, and hope your credentials don't leak. When you refuse, half the features disappear.

runi is different.

Statistics above: Stack Overflow 2025 Developer Survey (AI usage, trust, frustrations); Postman State of API 2025 (generative AI in workflow); APIContext API Drift White Paper (spec mismatch).


Why runi?

What You're Used To What runi Does
Create account to use No account. Ever.
Data synced to cloud Local-first. Your data stays yours.
Collections in proprietary format YAML files. Git-friendly. Diff them.
AI generates code, you hope it works AI generates code, runi verifies it against your spec
Spec changes break things silently Drift detection catches it before production
"What changed?" = archaeology Temporal awareness shows spec evolution

Features

HTTP Client (The Familiar Door)

Everything you expect, nothing you don't:

  • Full REST control — methods, headers, body, params, auth
  • Response viewer with syntax highlighting & timing
  • Network history panel — see all requests with filtering and search
  • Timing waterfall visualization — DNS, Connect, TLS, Wait, Download breakdown
  • Environment variables with {{substitution}}
  • Collections as YAML — version control your API workflows
  • Import from Postman, Bruno, Insomnia, OpenAPI
  • Export to cURL, JavaScript, Python
# Your collections are just files
# .runi/collections/stripe.yaml
name: Stripe API
requests:
  - name: List Customers
    method: GET
    url: '{{base_url}}/v1/customers'
    headers:
      Authorization: 'Bearer {{stripe_key}}'

Spec Intelligence (The Unexpected Room)

This is why you'll stay:

Drift Detection

75% of production APIs don't match their published specs. runi catches this before you ship.

  • Bind requests to your OpenAPI spec
  • Real-time validation as you work
  • Yellow badge = your request doesn't match the spec anymore
  • One-click: "Show me what changed"

AI Verification

When 46% of developers don't trust AI output, you need a second opinion. runi is that opinion.

  • Paste AI-generated code → runi validates against bound spec
  • Catches hallucinated endpoints before you waste an hour debugging
  • Flags deprecated fields the AI didn't know about
  • Purple (#a855f7) until verified. Green (#22c55e) when safe.

Signal System: runi uses consistent visual signals to communicate intelligence. Green = verified/safe, Amber = drift detected, Red = breaking change, Purple = AI-generated (suspect until verified), Blue = suggestion available. See CLAUDE.md for the complete signal reference.

Temporal Awareness

  • See how your API evolved over time
  • Diff between spec versions
  • "When did this field become required?"

Semantic Links

  • Stripe:CustomerYourAPI:User — see the relationship
  • Cross-API mapping for complex integrations
  • Finally understand how systems connect

Spatial Canvas

APIs as territory, not lists:

  • Endpoints as visual nodes
  • Drag, arrange, zoom, pan
  • See data flow between requests
  • Non-technical teammates can finally understand the integration

Installation

Build from Source

git clone https://github.com/paulbreuler/runi.git
cd runi
just install
just build

Requirements: Rust 1.80+, Node.js 20+, pnpm, just (task runner)

Note: All commands use just for consistency between local development and CI. See justfile for the complete command list.


Quick Start

# 1. Start development server
just dev

# 2. Send your first request
#    Just paste a URL and hit Enter

# 3. Import your OpenAPI spec
#    File → Import Spec → Select your openapi.yaml

# 4. Bind a request to the spec
#    Right-click request → Bind to Spec → Select operation

# 5. Watch drift detection work
#    Change your spec. See the yellow badge appear.

The Adoption Ladder: runi reveals features progressively as you use it. Start with the HTTP client and network history, discover drift detection when you import a spec, then AI verification, semantic links, and temporal awareness.


Tech Stack

Component Technology
Runtime Tauri v2.9.x
Backend Rust 1.80+
Frontend React 19 + TypeScript 5.9
Build Vite 7.x
Styling Tailwind CSS 4.x
Animation Motion 12.x
Routing React Router 7.x
State Zustand
Icons Lucide
Storage YAML/JSON files (no database)
AI (local) Ollama (optional)
AI (cloud) Anthropic Claude API (optional)

Bundle size: <50MB
Startup time: <3 seconds
Telemetry: None. Zero. We don't even have the infrastructure to collect it.


Project Status

Rung 1 (HTTP client) is in place: request/response, network history, timing waterfall, metrics, and signal UI. Next we harden that and move to spec + collections, then drift, then AI verification.

Now (Phase 1 — Polish & quick wins)

  • HTTP client core
  • Network history panel with filtering
  • Timing waterfall visualization
  • Metrics and signal system UI
  • Code display unification (ResponseViewer → CodeSnippet)
  • Any remaining Rung 1 cleanup

Next (Phase 2–4 — Spec intelligence)

  • Collections as YAML
  • OpenAPI spec import and spec-aware UI
  • Spec binding and drift detection
  • Response validation
  • AI verification against bound specs
  • MCP control surface
  • Temporal awareness (spec version history)
  • Semantic links between specs

Later

  • Import/export (Postman, Bruno, Insomnia)
  • Spatial canvas view
  • Collaborative features (local-first sync)
  • Plugin system

Migrating from Postman/Bruno

Import functionality is coming soon. Planned commands:

# From Postman
runi import postman ./your-collection.json

# From Bruno
runi import bruno ./your-bruno-folder

# From OpenAPI spec
runi import openapi ./openapi.yaml

Your existing workflows should just work. If they don't, open an issue.


Philosophy

Verification beats generation.

While everyone builds tools to write more code, we're building the tool that lets you trust it.

  • Local-first: Your data never leaves your machine unless you explicitly share it
  • Git-friendly: Collections are YAML. Diff them. Review them. Version them.
  • Spec-bound: The OpenAPI spec is the source of truth. Everything validates against it.
  • No account required: We don't want your email. We don't want your data. We want you to be productive.
  • Progressive disclosure: Features reveal based on user behavior, not menus
  • MCP-powered: Support for MCP 2025-11-25 spec (async ops, elicitation)

The brand philosophy: "Collapse uncertainty into truth"


Contributing

We welcome contributions! See CONTRIBUTING.md for guidelines.

# Development setup
git clone https://github.com/paulbreuler/runi.git
cd runi
just install      # First-time setup
just dev          # Start development server
just ci           # Run full CI pipeline (before pushing)
just pre-commit   # Fast checks (before committing)

Essential Commands:

  • just install - Install all dependencies
  • just dev - Start development server
  • just ci - Full CI pipeline (format, lint, typecheck, test, E2E)
  • just pre-commit - Fast checks before committing
  • just fmt - Fix formatting
  • just test - Run all tests
  • just generate-types - Generate TypeScript types from Rust (ts-rs)

See justfile for the complete command list.

Good First Issues

Look for issues labeled good first issue.


Community

  • Discord — Chat with the team and community
  • Twitter/X — Updates and announcements
  • Blog — Deep dives and tutorials

License

MIT — See LICENSE for terms.


Acknowledgments

Named after Kiki runi — a German Shepherd who sniffs out what's hidden and guards the perimeter.

Built by BaseState in Fargo, North Dakota.

"Collapse uncertainty into truth"


If runi helps you, consider giving it a star ⭐

About

See the truth about your APIs runi is an open-source API client that verifies what AI generates. When 46% of developers don't trust AI output (Stack Overflow 2025 Developer Survey), you need a second opinion. runi is that opinion.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 5