[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-75036":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":9,"rankLanguage":9,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":24,"topics":25,"createdAt":9,"pushedAt":9,"updatedAt":32,"readmeContent":33,"aiSummary":34,"trendingCount":15,"starSnapshotCount":15,"syncStatus":35,"lastSyncTime":36,"discoverSource":37},75036,"apiark","berbicanes\u002Fapiark","berbicanes","Privacy-first API platform built with Tauri v2. No login, no cloud, ~60 MB RAM. A lightweight Postman alternative.",null,"TypeScript",1083,56,3,31,0,8,12,29,24,78.17,"MIT License",false,"main",true,[26,27,28,29,30,31],"api-client","desktop-app","developer-tools","rust","tauri","typescript","2026-06-12 04:01:17","\u003Cp align=\"center\">\n  \u003Cimg src=\"apps\u002Fdesktop\u002Fsrc-tauri\u002Ficons\u002F128x128@2x.png\" alt=\"ApiArk\" width=\"96\" height=\"96\" \u002F>\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">ApiArk\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  \u003Cstrong>The API platform that respects your privacy, your RAM, and your Git workflow.\u003C\u002Fstrong>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  No login. No cloud. No bloat.\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cem>Postman uses 800 MB of RAM. ApiArk uses 60 MB.\u003C\u002Fem>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fberbicanes\u002Fapiark\u002Freleases\u002Flatest\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002Fberbicanes\u002Fapiark?style=flat-square&color=6366f1\" alt=\"Latest Release\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fberbicanes\u002Fapiark\u002Freleases\u002Flatest\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fdownloads\u002Fberbicanes\u002Fapiark\u002Ftotal?style=flat-square&color=22c55e\" alt=\"Downloads\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fberbicanes\u002Fapiark\u002Fstargazers\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fberbicanes\u002Fapiark?style=flat-square&color=eab308\" alt=\"Stars\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fberbicanes\u002Fapiark\u002Factions\u002Fworkflows\u002Fci.yml\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fberbicanes\u002Fapiark\u002Fci.yml?style=flat-square&label=CI\" alt=\"CI\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"LICENSE\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fberbicanes\u002Fapiark?style=flat-square\" alt=\"MIT License\" \u002F>\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"#download\">Download\u003C\u002Fa> &bull;\n  \u003Ca href=\"#features\">Features\u003C\u002Fa> &bull;\n  \u003Ca href=\"#switching-from-postman\">Switching from Postman\u003C\u002Fa> &bull;\n  \u003Ca href=\"#performance\">Performance\u003C\u002Fa> &bull;\n  \u003Ca href=\"#community\">Community\u003C\u002Fa> &bull;\n  \u003Ca href=\"#development\">Development\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"README.md\">English\u003C\u002Fa> &bull;\n  \u003Ca href=\"docs\u002Freadme\u002FREADME_es.md\">Espa&#241;ol\u003C\u002Fa> &bull;\n  \u003Ca href=\"docs\u002Freadme\u002FREADME_fr.md\">Fran&#231;ais\u003C\u002Fa> &bull;\n  \u003Ca href=\"docs\u002Freadme\u002FREADME_de.md\">Deutsch\u003C\u002Fa> &bull;\n  \u003Ca href=\"docs\u002Freadme\u002FREADME_pt.md\">Portugu&#234;s\u003C\u002Fa> &bull;\n  \u003Ca href=\"docs\u002Freadme\u002FREADME_zh.md\">&#20013;&#25991;\u003C\u002Fa> &bull;\n  \u003Ca href=\"docs\u002Freadme\u002FREADME_ja.md\">&#26085;&#26412;&#35486;\u003C\u002Fa> &bull;\n  \u003Ca href=\"docs\u002Freadme\u002FREADME_ko.md\">&#54620;&#44397;&#50612;\u003C\u002Fa> &bull;\n  \u003Ca href=\"docs\u002Freadme\u002FREADME_ar.md\">&#1575;&#1604;&#1593;&#1585;&#1576;&#1610;&#1577;\u003C\u002Fa>\n\u003C\u002Fp>\n\n---\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fscreenshots\u002Frest-get.png\" alt=\"ApiArk — REST GET Request\" width=\"800\" \u002F>\n\u003C\u002Fp>\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>More screenshots\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n\u003Ctable>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>POST Request\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>\u003Cstrong>GraphQL\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cimg src=\"docs\u002Fscreenshots\u002Frest-post.png\" alt=\"POST Request\" width=\"400\" \u002F>\u003C\u002Ftd>\n\u003Ctd>\u003Cimg src=\"docs\u002Fscreenshots\u002Fgraphql.png\" alt=\"GraphQL\" width=\"400\" \u002F>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>WebSocket\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>\u003Cstrong>Server-Sent Events\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cimg src=\"docs\u002Fscreenshots\u002Fwebsocket.png\" alt=\"WebSocket\" width=\"400\" \u002F>\u003C\u002Ftd>\n\u003Ctd>\u003Cimg src=\"docs\u002Fscreenshots\u002Fsse.png\" alt=\"SSE\" width=\"400\" \u002F>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>PUT Request\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>\u003Cstrong>PATCH Request\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cimg src=\"docs\u002Fscreenshots\u002Frest-put.png\" alt=\"PUT Request\" width=\"400\" \u002F>\u003C\u002Ftd>\n\u003Ctd>\u003Cimg src=\"docs\u002Fscreenshots\u002Frest-patch-title.png\" alt=\"PATCH Request\" width=\"400\" \u002F>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>DELETE Request\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cimg src=\"docs\u002Fscreenshots\u002Frest-delete.png\" alt=\"DELETE Request\" width=\"400\" \u002F>\u003C\u002Ftd>\n\u003Ctd>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\n\u003C\u002Fdetails>\n\n## Why ApiArk?\n\n| | Postman | Bruno | Hoppscotch | **ApiArk** |\n|---|---|---|---|---|\n| **Framework** | Electron | Electron | Tauri | **Tauri v2** |\n| **RAM Usage** | 300-800 MB | 150-300 MB | 50-80 MB | **~60 MB** |\n| **Startup** | 10-30s | 3-8s | \u003C2s | **\u003C2s** |\n| **Account Required** | Yes | No | Optional | **No** |\n| **Data Storage** | Cloud | Filesystem | IndexedDB | **Filesystem (YAML)** |\n| **Git-Friendly** | No | Yes (.bru) | No | **Yes (standard YAML)** |\n| **gRPC** | Yes | Yes | No | **Yes** |\n| **WebSocket** | Yes | No | Yes | **Yes** |\n| **SSE** | Yes | No | Yes | **Yes** |\n| **MQTT** | No | No | No | **Yes** |\n| **Mock Servers** | Cloud only | No | No | **Local** |\n| **Monitors** | Cloud only | No | No | **Local** |\n| **Plugin System** | No | No | No | **JS + WASM** |\n| **Proxy Capture** | No | No | No | **Yes** |\n| **Response Diff** | No | No | No | **Yes** |\n\n## Download\n\n**[Latest Release](https:\u002F\u002Fgithub.com\u002Fberbicanes\u002Fapiark\u002Freleases\u002Flatest)**\n\n| Platform | Download |\n|----------|----------|\n| **Windows** | [`.exe` installer](https:\u002F\u002Fgithub.com\u002Fberbicanes\u002Fapiark\u002Freleases\u002Flatest) &bull; [`.msi`](https:\u002F\u002Fgithub.com\u002Fberbicanes\u002Fapiark\u002Freleases\u002Flatest) |\n| **macOS** | [Apple Silicon `.dmg`](https:\u002F\u002Fgithub.com\u002Fberbicanes\u002Fapiark\u002Freleases\u002Flatest) &bull; [Intel `.dmg`](https:\u002F\u002Fgithub.com\u002Fberbicanes\u002Fapiark\u002Freleases\u002Flatest) |\n| **Linux** | [`.AppImage`](https:\u002F\u002Fgithub.com\u002Fberbicanes\u002Fapiark\u002Freleases\u002Flatest) &bull; [`.deb`](https:\u002F\u002Fgithub.com\u002Fberbicanes\u002Fapiark\u002Freleases\u002Flatest) &bull; [`.rpm`](https:\u002F\u002Fgithub.com\u002Fberbicanes\u002Fapiark\u002Freleases\u002Flatest) |\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>Package managers\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n```bash\n# Homebrew (macOS)\nbrew tap berbicanes\u002Fapiark\nbrew install --cask apiark\n\n# Scoop (Windows)\nscoop bucket add apiark https:\u002F\u002Fgithub.com\u002Fberbicanes\u002Fapiark\nscoop install apiark\n\n# APT (Debian\u002FUbuntu)\ncurl -fsSL https:\u002F\u002Fberbicanes.github.io\u002Fapiark-apt\u002Finstall.sh | sudo bash\nsudo apt install apiark\n```\n\nAlso available on the [Microsoft Store](https:\u002F\u002Fapps.microsoft.com\u002Fsearch?query=ApiArk).\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>Build from source\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n**Prerequisites:** Node.js 22+, pnpm 10+, Rust toolchain, [Tauri v2 system deps](https:\u002F\u002Fv2.tauri.app\u002Fstart\u002Fprerequisites\u002F)\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fberbicanes\u002Fapiark.git\ncd apiark\npnpm install\npnpm tauri build\n```\n\u003C\u002Fdetails>\n\n## Switching from Postman\n\n1. Export your Postman collection (Collection v2.1 JSON)\n2. Open ApiArk\n3. `Ctrl+K` > \"Import Collection\" > select your file\n4. Done. Your requests are now YAML files you own.\n\nAlso imports from: **Insomnia**, **Bruno**, **Hoppscotch**, **OpenAPI 3.x**, **HAR**, **cURL**.\n\n## Features\n\n**Multi-Protocol** — REST, GraphQL, gRPC, WebSocket, SSE, MQTT, Socket.IO in one app. No tool has broader protocol coverage.\n\n**Local-First Storage** — Every request is a `.yaml` file. Collections are directories. Everything is git-diffable. No proprietary formats.\n\n**Dark Mode + Themes** — Dark, Light, Black\u002FOLED themes with 8 accent colors.\n\n**TypeScript Scripting** — Pre\u002Fpost-request scripts with full type definitions. `ark.test()`, `ark.expect()`, `ark.env.set()`.\n\n**Collection Runner** — Run entire collections with data-driven testing (CSV\u002FJSON), configurable iterations, JUnit\u002FHTML reports.\n\n**Local Mock Servers** — Create mock APIs from your collections. Faker.js data, latency simulation, error injection. No cloud, no usage limits.\n\n**Scheduled Monitoring** — Cron-based automated testing with desktop notifications and webhook alerts. Runs locally, not on someone else's server.\n\n**API Docs Generation** — Generate HTML + Markdown documentation from your collections.\n\n**OpenAPI Editor** — Edit and lint OpenAPI specs with Spectral integration.\n\n**Response Diff** — Compare responses side-by-side across runs.\n\n**Proxy Capture** — Local intercepting HTTP\u002FHTTPS proxy for traffic inspection and replay.\n\n**AI Assistant** — Natural language to requests, auto-generate tests, OpenAI-compatible API.\n\n**Plugin System** — Extend ApiArk with JavaScript or WASM plugins.\n\n**Import Everything** — Postman, Insomnia, Bruno, Hoppscotch, OpenAPI, HAR, cURL. One-click migration.\n\n## Performance\n\nBuilt with Tauri v2 (Rust backend + native OS webview), not Electron.\n\n| Metric | Target |\n|---|---|\n| Binary size | ~20 MB |\n| RAM at idle | ~60 MB |\n| Cold startup | \u003C2s |\n| Request send latency | \u003C10ms overhead |\n\n## Data Format\n\nYour data is plain YAML. No lock-in. No proprietary encoding.\n\n```yaml\n# users\u002Fcreate-user.yaml\nname: Create User\nmethod: POST\nurl: \"{{baseUrl}}\u002Fapi\u002Fusers\"\n\nheaders:\n  Content-Type: application\u002Fjson\n\nauth:\n  type: bearer\n  token: \"{{adminToken}}\"\n\nbody:\n  type: json\n  content: |\n    {\n      \"name\": \"{{userName}}\",\n      \"email\": \"{{userEmail}}\"\n    }\n\nassert:\n  status: 201\n  body.id: { type: string }\n  responseTime: { lt: 2000 }\n\ntests: |\n  ark.test(\"should return created user\", () => {\n    const body = ark.response.json();\n    ark.expect(body).to.have.property(\"id\");\n  });\n```\n\n## CLI\n\n```bash\n# Run a collection\napiark run .\u002Fmy-collection --env production\n\n# With data-driven testing\napiark run .\u002Fmy-collection --data users.csv --reporter junit\n\n# Import a Postman collection\napiark import postman-export.json\n```\n\n## No Lock-In Pledge\n\n> If you decide to leave ApiArk, your data leaves with you. Every file is a standard format. Every database is open. We will never make it hard to switch away.\n\n## Community\n\n- [GitHub Discussions](https:\u002F\u002Fgithub.com\u002Fberbicanes\u002Fapiark\u002Fdiscussions) — Ideas, Q&A, show & tell\n- [GitHub Issues](https:\u002F\u002Fgithub.com\u002Fberbicanes\u002Fapiark\u002Fissues) — Bug reports and feature requests\n\n## Translations\n\nApiArk UI supports internationalization via `react-i18next`. Currently available in **English**.\n\nHelp us translate ApiArk into your language! See the [`locales\u002F`](apps\u002Fdesktop\u002Fsrc\u002Flocales\u002F) directory and submit a PR.\n\n## Development\n\n```bash\n# Install dependencies\npnpm install\n\n# Run in development mode\npnpm tauri dev\n\n# TypeScript check\npnpm -C apps\u002Fdesktop exec tsc --noEmit\n\n# Build for production\npnpm tauri build\n```\n\n### Project Structure\n\n```\napiark\u002F\n├── apps\u002F\n│   ├── desktop\u002F           # Tauri v2 desktop app\n│   │   ├── src\u002F           # React frontend\n│   │   └── src-tauri\u002F     # Rust backend\n│   ├── cli\u002F               # CLI tool (Rust)\n│   ├── mcp-server\u002F        # MCP server for AI editors\n│   └── vscode-extension\u002F  # VS Code extension\n├── packages\u002F\n│   ├── types\u002F             # Shared TypeScript types\n│   └── importer\u002F          # Collection importers\n└── docs\u002F                  # Documentation and legal\n```\n\n### Tech Stack\n\n**Frontend:** React 19, TypeScript, Vite 6, Zustand, Tailwind CSS 4, Monaco Editor, Radix UI\n\n**Backend:** Rust, Tauri v2, reqwest, tokio, tonic (gRPC), axum (mock servers), deno_core (scripting)\n\n## Contributing\n\nContributions are welcome! Check out the [GitHub Issues](https:\u002F\u002Fgithub.com\u002Fberbicanes\u002Fapiark\u002Fissues) for open tasks and feature requests.\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fberbicanes\u002Fapiark\u002Fgraphs\u002Fcontributors\">\n  \u003Cimg src=\"https:\u002F\u002Fcontrib.rocks\u002Fimage?repo=berbicanes\u002Fapiark\" alt=\"Contributors\" \u002F>\n\u003C\u002Fa>\n\n## License\n\n[MIT](LICENSE)\n\n---\n\n\u003Cp align=\"center\">\n  \u003Csub>If ApiArk helps your workflow, consider giving it a star. It helps others discover the project.\u003C\u002Fsub>\n\u003C\u002Fp>\n","ApiArk 是一个注重隐私的 API 平台，基于 Tauri v2 构建。该项目无需登录、不依赖云端服务，且运行时仅占用约 60 MB 的内存，是 Postman 的轻量级替代品。其核心功能包括支持 REST 请求、GraphQL、WebSocket 和 Server-Sent Events 等多种 API 测试方式。技术上，ApiArk 利用 Rust 和 TypeScript 开发，确保了高性能与安全性。适合对隐私保护有较高要求或希望减少资源消耗的开发者在日常 API 开发和测试中使用。",2,"2026-06-11 03:52:02","high_star"]