Shurikly 1.0.0 — Product Documentation

The open-source API client that reads your code.

ProductShurikly
Version1.0.0
Launch date25 October 2026
LicenseMIT (open source)
PlatformsmacOS 12+ (Apple silicon & Intel), Windows 10 / 11 (x64), Linux (AppImage)
App IDcom.shurikly.app
Document statusPre-launch — final for the 1.0.0 release

Launching 25 October 2026. Installers for macOS, Windows and Linux and the public GitHub repository go live on launch day. Until then, download links on the website show Coming soon.


Overview

Shurikly is a free, open-source desktop application for designing, sending, testing, mocking and documenting HTTP APIs. It is local-first: there is no account, no cloud sync and no telemetry. Collections, environments, history and settings are plain JSON files on your own disk.

What sets Shurikly apart is that it starts from your code. The Code Scanner reads a project folder and builds a ready-to-send collection from your backend routes and frontend calls. The AI Engineer analyzes that collection, generates tests and explains failures. The Mock Server turns the same collection into a local fake API, and a built-in MCP server lets AI agents such as Claude and Cursor work with your live workspace.

Shurikly request editor with a JSON response The request editor: method and URL, request tabs, and a 200 OK response in the JSON tree view.

The problem

The Shurikly answer

PrincipleWhat it means in practice
Local-firstAll data lives in JSON files in your app data folder. Requests go directly from your machine to the target server.
Open sourceMIT license. Read, fork, audit and redistribute freely.
Code-awareCollections generated from source code and OpenAPI files, and re-scanned without losing your edits.
Your AI, your choiceOpenAI, Anthropic, Gemini, any OpenAI-compatible endpoint, or fully local Ollama. AI never sees API data unless you allow it.
One toolClient, tests, runner, mock server, docs export and agent integration in a single desktop app.

Who it is for


Feature summary

AreaHighlights
RequestsREST, GraphQL and WebSocket; params, headers, JSON / form / raw / binary bodies
AuthenticationInherit, None, API key, Bearer, JWT, Basic, Digest, OAuth 1.0, OAuth 2.0 (authorization code, client credentials, password), AWS Signature, Hawk
GraphQLSchema introspection, schema-aware autocomplete and validation, operation selection, data / errors view
Response inspectionJSON tree with filter, JSONPath, copy path / value, find-in-body, save to file, media previews, hex view, large-response guards
CompareDiff status, headers, JSON paths, text, time and size vs. previous run, pinned baseline or another tab
OrganizationCollections, folders, inherited auth / headers / settings, tabs, history
Environments{{variables}} with per-environment values and an active environment
Scripts & testsPre-request scripts, assertions, collection runner with reports
Import / exportImport Postman, OpenAPI and cURL; export Postman, OpenAPI, cURL, Markdown / HTML docs; code snippets for cURL, JavaScript, Node.js, Python
Code ScannerCollections from Express, Fastify, NestJS, Next.js, FastAPI, Flask, Django / DRF, OpenAPI files and frontend HTTP calls
AIGenerate requests from plain English, explain responses, write tests, fix failing requests, document collections
AI EngineerAPI analysis, baseline and AI tests, safe execution, evidence-backed failure analysis
Mock ServerLocal mock APIs, multiple responses per route, templates, CORS, request log
MCPLocal Model Context Protocol server with 28 tools for AI agents
DiagnosticsSearchable logs and local bug reports with credential redaction

Screen tour

Every screenshot in this document was taken from the Shurikly 1.0.0 desktop app on macOS in the default dark theme, using a sample Store API collection (backed by the public DummyJSON API) and a public GraphQL endpoint.

ScreenWhere to find itSection
Request editorLeft rail → RequestsRequests
EnvironmentsSidebar → Envs, or the environment menuEnvironments and variables
Tests and Collection RunnerRequest → Tests; collection menu → Run collectionScripts, tests and the collection runner
CompareResponse bar → CompareCompare
Code ScannerLeft rail → Code ScannerCode Scanner
AI EngineerLeft rail → AI EngineerAI Engineer
Mock ServersLeft rail → Mock ServersMock Server
SettingsLeft rail → gear iconSettings

Getting started

Install on macOS

  1. From 25 October 2026, download the disk image for your Mac from the website or GitHub Releases:
    • Apple silicon (M1 and later): Shurikly-1.0.0-arm64.dmg
    • Intel: Shurikly-1.0.0.dmg
  2. Open the .dmg and drag Shurikly into Applications.
  3. The 1.0.0 build is not yet notarized by Apple. On first launch, right-click Shurikly in Applications and choose Open, then confirm. Later launches open normally.

Not sure which Mac you have? Apple menu → About This Mac. "Chip: Apple M…" means Apple silicon; "Processor: Intel…" means Intel.

Install on Windows

  1. From 25 October 2026, download Shurikly Setup 1.0.0.exe from the website.
  2. Run the installer. You can choose the installation folder; Start menu and desktop shortcuts are created.
  3. If Microsoft Defender SmartScreen shows a warning for the unsigned installer, choose More info → Run anyway.

Install on Linux

The AppImage is available from 25 October 2026.

chmod +x Shurikly-1.0.0.AppImage
./Shurikly-1.0.0.AppImage

First launch

On first launch Shurikly shows a three-step setup flow. Every choice can be changed later in Settings.

  1. Welcome — what the app does: HTTP, GraphQL and WebSocket, collections and folders, environments, every common auth type, scripts / tests / runner, and built-in AI.
  2. Local-first — no account and no telemetry, your data stays on this machine, requests go directly to the servers you call, and AI is used only when you ask.
  3. Terms and get started — accept the terms, then send a sample request, import an existing collection, or connect an AI provider.

Shurikly welcome screen Step 1 — the welcome screen.

Shurikly local-first screen Step 2 — what local-first means for your data.

The main window

Shurikly request editor with a collection tree and a JSON response The Requests workspace: collection tree on the left, open request tabs across the top, the request editor in the middle and the response below.

AreaWhat it does
Left railSwitch between Requests, Mock Servers, AI Engineer and Code Scanner. Bug reports and Settings sit at the bottom.
SidebarCollections, Envs and History tabs. Search, create (+) and import (upload icon) at the top.
Tab barOne tab per open request, with its method badge. + opens a blank request.
Request barBreadcrumb (collection › request), protocol switch (HTTP / GQL / WS), active environment, split-view toggle, Save and more actions.
URL rowMethod picker, URL with {{variables}}, and Send (Ctrl+Enter).
Request tabsParams, Auth, Headers, Body, Notes, Scripts, Tests, Settings. A dot or count shows which tabs hold data. The AI button opens AI actions.
Response panelStatus, time, size and test summary, plus Compare, Explain and the Body / Headers / Cookies / Tests views.

Your first request

  1. In Requests, click New request in the sidebar (or + in the tab bar).
  2. Choose a method and enter a URL — for example https://dummyjson.com/products?limit=5. Query parameters typed in the URL appear in the Params table, and edits in the table update the URL.
  3. Press Send or Ctrl+Enter. The response panel shows the status (for example 200 OK), time, size and the body as a JSON tree.
  4. Click Save to put the request into a collection. It then appears in the sidebar, and every send is recorded in History.

Requests

Protocols

Request builder

Path variables and a 200 response Path variables: {{baseUrl}}/products/:id with id = 1, sent with the Production environment.

POST request with a JSON body and a 201 response A POST with a JSON body. The response shows 201 Created and the new record.

All HTTP traffic is executed in the Electron main process, not in the web renderer, so requests are not subject to browser CORS rules and behave like a real client.

Authentication

TypeNotes
InheritUse the auth of the parent folder or collection
NoneSend no auth
API keyHeader or query parameter
BearerAuthorization: Bearer <token>
JWTBuild and sign a JWT for the request
BasicUsername and password
DigestHTTP Digest challenge / response
OAuth 1.0Signed requests
OAuth 2.0Authorization code, client credentials and password grants; token retrieval and reuse
AWS SignatureSigns requests for AWS services
HawkHawk authentication

Requests default to Inherit auth from parent. The Auth tab shows which folder or collection the credentials come from and the resolved type, so you can set a token once on the collection and every request uses it.

Auth tab showing inherited bearer token The request inherits Bearer Token auth from the Store API collection. Set it via the collection menu → Authorization.

GraphQL

Switch a request to GQL in the request bar, or create one from a collection menu → New GraphQL request.

  1. Enter the endpoint URL and click Fetch schema to run introspection. The status changes to Schema available.
  2. Write the query in the Query tab. The editor offers schema-aware autocomplete and validation, and Format query tidies it.
  3. Put variables as JSON in the Variables tab.
  4. If the document has several operations, pick one from Operation.
  5. Send. The response shows the HTTP status and a GraphQL status (GraphQL OK or errors), with separate Data and Errors views.

GraphQL request with schema and data response A GraphQL query with variables against a public endpoint. The schema is loaded and the response is shown in the Data view.


Response inspection

The response bar shows the status, time, size and, when the request has tests, a pass count such as 4/4 tests.


Compare

Click Compare in the response bar to diff the latest response (B) against a run you pick (A):

Compare responses dialog Comparing two runs of the same request: status, time (−42 ms), size and content type at the top, then request, header and body differences.

PartWhat it tells you
Summary cardsStatus, time, size and content type for A → B, with the change.
RequestWhat changed in the request between the runs — so you can tell whether a difference came from the server or from your edit.
Response headersAdded, removed and changed headers. Ignore volatile headers hides noise such as dates and rate-limit counters.
BodyJSON differences path by path, or a text diff for non-JSON bodies.

Collections, folders and history

Right-click a collection (or use its … menu) for collection actions:

Collection context menu Collection menu: Run collection, New Request, New GraphQL request, New Folder, Authorization, Rename, Export…, Create Mock Server and Delete.

History tab History lists every send with its status code. The method filter and clear button are at the top.


Environments and variables

  1. Open the environment menu in the request bar (it shows No Environment or the active one) and choose Manage Environments…, or use the Envs tab in the sidebar.
  2. Click + to add an environment such as Production or Local mock.
  3. Add variables as rows — for example baseUrl = https://dummyjson.com. Untick a row to disable it.
  4. Mark one environment Active. Its variables are substituted wherever you write {{variableName}} — URL, params, headers, body and auth.

Environments dialog Two environments, Production (active) and Local mock. {{baseUrl}} and {{accessToken}} are used by every request in the Store API collection.

Tip: pair a Local mock environment (baseUrl = http://127.0.0.1:4010) with a mock server to switch the whole collection between the real API and the mock with one click.


Scripts, tests and the collection runner

Pre-request scripts

The Scripts tab runs JavaScript before the request is sent. Scripts can read and set environment variables — for example, to compute a signature or a timestamp. Collection and folder scripts run first, then the request's own script.

Tests

The Tests tab holds pm.test-style assertions that run in a sandbox after every response. The sandbox provides pm.test(name, fn), pm.response.status, pm.response.headers, pm.response.responseTime, pm.response.json() and pm.response.text(). A test passes unless its function throws.

pm.test("status is 200", function () {
  if (pm.response.status !== 200) throw new Error("Expected 200, got " + pm.response.status)
})
pm.test("returns a list of products", function () {
  const body = pm.response.json()
  if (!Array.isArray(body.products)) throw new Error("products is not an array")
})
pm.test("responds in under 1.5s", function () {
  if (pm.response.responseTime > 1500) throw new Error("slow: " + pm.response.responseTime + "ms")
})

Tests tab with passing results Four assertions on List products, all passing. Results appear under the editor and as 4/4 tests in the response bar.

AI Generate writes assertions from the latest response, and Run Tests re-runs them without re-sending the request.

Collection runner

Choose Run collection (or Run folder) from the sidebar menu. Set a delay between requests and whether to stop on failure, then click Run. The runner sends every request in order with inherited auth, headers and scripts, runs each request's tests, and reports totals plus a per-request line with method, status and time.

Collection runner results The Store API collection: 12 requests, 11 passed and 1 failed (/auth/me without a token), completed in 7.3 s.


Import and export

DirectionFormats
ImportPostman collections, OpenAPI (JSON / YAML, including Swagger 2 and $ref resolution), cURL commands
ExportPostman collection, OpenAPI, cURL, Markdown API docs, HTML API docs
Code snippetscURL, JavaScript (fetch), Node.js, Python — with inherited auth and headers applied

Code Scanner

Code Scanner turns a project folder into a Shurikly collection. Code is read locally and never uploaded.

Code Scanner results for an Express backend Scanning an Express backend: 60 endpoints in 32 files in 0.3 s, with the framework and auth scheme detected.

How it works

  1. Open Code Scanner and click Choose folder. For safety, only folders picked in the system dialog can be scanned.
  2. Shurikly detects the frameworks in use and extracts endpoints from the backend and HTTP calls from the frontend.
  3. Frontend calls are linked to backend routes, so you can see which endpoints are used and which calls have no matching route.
  4. Review the results, then click Import N requests to create the collection. Rescan re-reads the same folder.

Reading the results

PartWhat it shows
Summary lineFolder path, endpoint and file counts, scan time, and chips for each detected framework and auth scheme (for example Express, Bearer token).
CollectionName of the collection to create — taken from the project's package.json or folder name. Editable.
Base URLDetected from .env files, dev-server proxies or the listen port. With Use environment on, it is stored as {{baseUrl}} in an environment instead of being hard-coded into every request.
Endpoint listMethod, path and a generated name for each endpoint, with the source file and line (for example src/routes/index.js:83). A lock icon marks endpoints that need auth. Filter by method, path or file, and untick endpoints to leave them out.
Hand-off barSend the selected endpoints straight to Create mock server, Test in AI Engineer or Export OpenAPI.

Supported sources in 1.0.0

CategorySupported
Node.js backendsExpress, Fastify, NestJS, Next.js (app router and pages router)
Python backendsFastAPI, Flask, Django / Django REST Framework
SpecificationsOpenAPI 3 and Swagger 2 files in the repository
Frontend callsfetch, axios, ky, ofetch, superagent, SWR, RTK Query, Angular HttpClient, generated SDKs, GraphQL clients, wrapper functions across files
Base URLs.env files and dev-server proxy configuration
Request bodieszod, joi, yup, TypeBox, Fastify JSON Schema, express-validator
Auth detectionBearer, API key, Basic and token-prefix schemes from middleware and decorators

Re-scan without losing work

When you scan again, Shurikly merges the new results into the existing collection using structural fingerprints. Requests you edited keep your changes; new endpoints are added and removed ones are flagged.

Hand-offs

AI enrichment (optional)

With an AI provider configured, Code Scanner can enrich endpoints with descriptions and better example bodies. Each run asks for explicit consent, code snippets are scrubbed of secrets before sending, and answers are checked against the code that was actually sent.


AI features

Providers

ProviderNotes
OpenAIYour own API key
AnthropicYour own API key
Google GeminiYour own API key
OpenAI-compatibleAny endpoint that speaks the OpenAI API (self-hosted gateways, other vendors)
OllamaFully local models; nothing leaves your machine

Open Settings → AI to choose a routing mode:

ModeBehavior
CloudEvery request uses the selected cloud provider (OpenAI, Anthropic, Gemini, DeepSeek or OpenRouter).
Ollama (Local)Every request runs on local models; nothing leaves your machine.
HybridLight tasks run locally; heavy tasks use the selected cloud provider.

AI settings Settings → AI: routing mode, cloud provider, default model with pricing, temperature, max tokens, and fallback and cache switches.

Automatic fallback retries on the other provider if the active one fails, and Prompt cache reuses answers to identical prompts. Usage is tracked locally and a budget guard can stop requests once a spending limit is reached. API keys are encrypted with the operating system's secure storage (Electron safeStorage).

What AI can do


AI Engineer

AI Engineer is an analysis and testing workflow built on the same HTTP engine, environments and collections as the rest of the app.

Walkthrough

  1. Open AI Engineer, pick a collection in the top-right menu (or Import OpenAPI), and click Analyze API. The Test suite panel summarizes the API — endpoints, auth-related endpoints and protected ones.
  2. Click Generate tests. Without an AI provider you get baseline tests (reachability and missing-auth probes); with one, AI adds functional, edge-case and auth tests.
  3. Click Run safe tests. Results stream into Latest run with a passed / failed / skipped count.

AI Engineer after analysis After Analyze API: 12 endpoints found, with 2 of them auth-related.

AI Engineer test run results A run of 12 baseline tests: 9 passed, 1 failed (/products/999999 returned 404) and 2 write tests skipped until approved.

The four cards at the top show Endpoints in the latest analysis, Tests executed across all runs, Pass rate and Findings (grouped by severity).

Works without an AI provider

With an AI provider

Only when Send API data to AI provider is turned on (it is off by default), and only after secrets are redacted:

Execution safety


Mock Server

Run local HTTP mock APIs from your collections.

Mock server created from a collection Create Mock Server on the Store API collection: one route per request, with {{baseUrl}} stripped and :id parameters kept.

Defaults

SettingDefault
Host127.0.0.1 (local only)
Port4010, or the next free port
State after app restartStopped until you start it again

Workflow

  1. Open Mock Servers, or choose Create Mock Server on a collection in Requests.
  2. Add or edit routes (method + path).
  3. Configure responses — status, headers, body and delay. A route can hold several responses; add, duplicate, disable or delete them.
  4. Start the server and call http://127.0.0.1:<port>/... from a browser, curl or Shurikly. Test sends a request to the selected route, Copy cURL copies a ready command, and URL copies the server address.

Mock route editor and request log Editing GET /products/:id: response name, status, delay, headers and body on the right, and the live Request log below — including a 404 for an unknown path.

The Request log lists every call with time, method, path, the response that was served, status and duration.

Save real responses as examples

In Requests, send a request, open the response menu and choose Save as mock example. Status, headers and body are added to the matching route (or a new route is created). Transport headers such as Content-Length, Set-Cookie and Date are dropped, {{baseUrl}} prefixes are ignored and {{id}} / {id} segments become :id parameters.

Choosing a response

ModeBehavior
Active (default)Always serves the response marked active
SequentialRotates through enabled responses on each request
RandomServes a random enabled response

A client can choose a response for a single call with the X-Mock-Response header or the __response query parameter, matching the response id, name (case-insensitive) or status code:

curl -H "X-Mock-Response: Not found" http://127.0.0.1:4010/users/1
curl "http://127.0.0.1:4010/users/1?__response=404"

An unknown value returns 400 with the list of available response names. Served responses carry an X-Mock-Response header with the URL-encoded response name.

Route matching

Templates

VariableMeaning
{{params.id}}Path parameter
{{query.page}}Query parameter
{{headers.authorization}}Request header
{{body.name}}Field from a JSON request body
{{method}}, {{path}}, {{host}}Request metadata

Missing values render as an empty string. CORS can be enabled per server, and every call is recorded in the request log.


MCP server

Shurikly includes a local Model Context Protocol server so AI agents can work with your live workspace — the same collections, environments and results you see in the app.

Enabling it

  1. Open Settings → AI and enable the MCP server.
  2. The server listens on http://127.0.0.1:47823/mcp (port configurable) and requires a bearer token, which you can regenerate at any time.
  3. By default, secrets are replaced with placeholders before an agent sees them. You can choose to expose them.

Connecting an agent

claude mcp add --transport http --header "Authorization: Bearer <token>" api-studio http://127.0.0.1:47823/mcp

Tools (28)

GroupTools
Readlist_collections, get_collection, get_request, search_requests, list_environments, list_history, get_active_tab, export_collection, generate_code_snippet
Collections & folderscreate_collection, update_collection, delete_collection, create_folder, update_folder, delete_folder
Requestscreate_request, update_request, delete_request, open_request
Environmentscreate_environment, update_environment, delete_environment, set_active_environment
Importimport_collection, import_curl
Executesend_request, run_collection

Diagnostics and bug reports


Settings

Settings are grouped into four tabs:

TabContents
AccountLocal profile and activity (no online account)
WorkspaceRequest, editor and general application preferences
AIProviders and keys, routing, budget, privacy switches, MCP server
HelpAbout, version, diagnostics and links

Settings are stored as JSON and can be backed up by copying the data folder.

Appearance settings Settings → Appearance: color mode (Light, Dark, System), style (Shurikly, Minimal, Professional, Midnight), accent color and density.

Shurikly in light mode The same workspace in Light mode.


Privacy and security

TopicBehavior
AccountsNone. Shurikly never asks you to sign in.
TelemetryNone.
Request trafficSent directly from your machine to the server you call.
StoragePlain JSON files in the local app data folder.
API keysEncrypted with the OS secure storage via Electron safeStorage (Keychain on macOS, DPAPI on Windows).
AI data sharingOff by default in AI Engineer; per-run consent in Code Scanner; secrets redacted before any AI call.
Mock ServerBinds to 127.0.0.1 by default.
MCP ServerOff by default; binds to 127.0.0.1; bearer-token protected; host header checked; secrets hidden unless exposed.
DiagnosticsCredentials redacted; reports never auto-uploaded.

Reporting a vulnerability

Please report security issues privately through GitHub Security Advisories on the repository rather than in a public issue.


Data storage

Shurikly stores its data in the data subfolder of the shurikly folder inside the operating system's application data directory:

OSLocation
macOS~/Library/Application Support/shurikly/data/
Windows%APPDATA%\shurikly\data\
Linux~/.config/shurikly/data/
FileContents
workspace.jsonCollections, folders, requests, environments, history
settings.jsonApplication settings
ai-provider-config.jsonAI provider configuration (keys encrypted)
usage.jsonLocal AI usage and cost tracking
ai-engineer.jsonAnalyses, test suites, runs, findings, privacy settings
mock-servers.jsonMock server definitions
mcp-server.jsonMCP server port, token and options
profile.json, activity.jsonLocal profile and activity
onboarding.jsonFirst-run state

To back up or move Shurikly to another computer, copy the shurikly folder while the app is closed. Encrypted API keys are tied to the original machine and must be entered again.


Architecture

Tech stack

LayerTechnology
ShellElectron 41
UIReact 19, TypeScript 5, TailwindCSS, Radix UI, Framer Motion
StateZustand
EditorsCodeMirror 6 (JSON, GraphQL and more)
BuildVite via electron-vite, electron-builder
AIOpenAI SDK and provider adapters, Model Context Protocol SDK
TestsVitest (28 test suites)

Process model

Repository layout

electron/
  main/
    api-studio/    HTTP client, auth, OAuth 2.0, scripts/tests, AI helpers
    ai/            AI providers, routing, metrics, budget guard
    ai-engineer/   analysis, test generation, execution
    code-scanner/  folder scanning and AI enrichment
    infra/         logger, API keys, onboarding, bug reports, JSON store
    ipc/           IPC handlers
    mock-server/   local HTTP mock server runtime
    mcp/           local MCP server and stdio bridge
    windows/       main window
  preload/         contextBridge API
src/
  modules/         api-studio · code-scanner · ai-engineer · mock-server
  features/        settings, onboarding, diagnostics
  shared/          UI components, stores, utilities
shared/            cross-process types, IPC contract, pure libraries
tests/             vitest suites

System requirements

Minimum
macOSmacOS 12 Monterey or later; Apple silicon (arm64) or Intel (x64)
WindowsWindows 10 or 11, 64-bit (x64)
Linux64-bit distribution able to run AppImage (glibc-based)
Memory4 GB RAM (8 GB recommended for large collections and Code Scanner)
DiskAbout 450 MB for the installed app plus your data (download is about 170 MB)
NetworkOnly for the APIs you call and any cloud AI provider you choose
Local AI (optional)Ollama with a model that fits your hardware

Build from source

Requirements: Node.js 20+ and Git. The source code is published on GitHub on launch day, 25 October 2026.

git clone https://github.com/shurikly/shurikly.git
cd shurikly
npm install
npm run dev
CommandPurpose
npm run devStart the app with hot reload
npm run typecheckTypeScript checks for main and renderer
npm testRun the Vitest suites
npm run verifyTypecheck, tests and production build
npm run dist:macBuild .dmg for macOS
npm run build:macBuild .dmg for both Intel and Apple silicon
npm run dist:win / npm run build:winBuild the Windows NSIS installer (x64)
npm run dist:linuxBuild the Linux AppImage

Installers are written to release/.

Release artifacts for 1.0.0

PlatformFile
macOS Apple siliconShurikly-1.0.0-arm64.dmg
macOS IntelShurikly-1.0.0.dmg
Windows x64Shurikly Setup 1.0.0.exe
Linux x64Shurikly-1.0.0.AppImage

Contributing

Shurikly is built in the open and contributions of every size are welcome.

  1. Discuss — open an issue for bugs and larger features before starting work.
  2. Fork and branch — create a topic branch from main.
  3. Develop — follow the existing code style; run npm run lint and npm run format.
  4. Verify — npm run verify must pass. Add or update tests in tests/.
  5. Pull request — describe what changed and why, with screenshots for UI changes.

Good first areas: new Code Scanner extractors (Spring, Go, Laravel, Rails, Koa, Hono, tRPC), documentation, translations of UI text, and additional code-snippet languages.


Roadmap

Planned after 1.0.0 (subject to community feedback):


Known limitations in 1.0.0


Troubleshooting

ProblemFix
macOS: "Shurikly can't be opened"Right-click the app in Applications → Open → Open.
Windows: SmartScreen warningMore info → Run anyway.
A request works in the browser but not in ShuriklyCheck the active environment and variable values; open the request's resolved URL and headers.
Mock Server port in useShurikly picks the next free port; check the server card for the actual port.
Claude Desktop does not see ShuriklyEnable the MCP server, click Install in Settings, then fully restart Claude Desktop.
AI features are unavailableAdd a provider and key in Settings → AI, or install Ollama and pull a model.
Something elseOpen Bug Reports → Diagnostics, create a report, and attach it to a GitHub issue.

Changelog

1.0.0 — 2026-10-25

First public, open-source release.

Added

Changed


License

Shurikly is released under the MIT License.

MIT License

Copyright (c) 2026 Shurikly contributors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.