Schema as documentation
The introspected schema is parsed and browsable as a tree — types, arguments and descriptions — always at hand while you build.
introspectionGraphQL Desktop Client
The desktop client built only for GraphQL. Browse your schema as living docs, graft your query one level at a time with add Query / add Child, and send it across any number of endpoints.
macOS · Windows · Linux / First project free, forever
query getUsers {add Query users {+ child id name posts {+ child title comments {+ child body } } }}
Introduction
GraftQL is a desktop client for developers who work with GraphQL APIs every day. It pulls in your schema over HTTP introspection, parses the shape of inputs and outputs, and lets you browse it as documentation while you build queries from that same schema.
Where generic REST clients bolt GraphQL on as an afterthought, GraftQL is GraphQL-first. HTTP requests are issued from the Rust side (reqwest), so it is free of the browser's CORS limits and reaches any endpoint directly. Environments are orthogonal in the Postman sense, so one query works across every endpoint.
The name is the interaction model itself. Graft = grow a query by splicing on branches with add Query / add Child — a "grow a tree" metaphor that runs through both the UI and the name.
Register an endpoint and introspection fetches the type catalog, expanded as documentation in the right pane.
add QueryFrom the schema's Query / Mutation fields, insert the root branch of your query.
+ childExpand one level at a time on object-typed branches. Graft recursively until the query has the shape you need.
Compose "query × selected environment", send it CORS-free, and inspect the response as JSON tree / raw / headers.
Features
Everything here ships today. The staged builder, the orthogonal environment model, and CORS-free sending are the core.
The introspected schema is parsed and browsable as a tree — types, arguments and descriptions — always at hand while you build.
introspectionInsert a root with add Query, expand one level with + child. The ▼ lets you choose "leaf scalars only / all" just for that step.
add Query · add ChildEnvironments are orthogonal "connection profiles" (the Postman way). Queries stay environment-free; only the target changes between dev / stg / prod.
orthogonal envsThe auth "method" (None / Bearer / Basic) is kept separate from the "secret". Tokens and passwords stay local to the environment and never travel in shares or exports.
auth: type · secretHTTP is always issued from Rust (reqwest), free of browser CORS. Inspect responses across JSON tree / raw / headers, with status and timing.
Rust · reqwestThe introspected schema is cached in local SQLite, keyed by endpoint URL. Instant on next launch; refresh only via the manual "⟳ re-fetch".
local-firstPricing
When you add a project and have no free slot, you buy an extra slot. The price per slot steps down as you add more.
From the 2nd project on, buy "extra slots" as a monthly subscription. The price steps down: 2nd ¥250 → 3rd ¥240 → 4th ¥220 → 5th and beyond ¥200 each.
| Projects | Per-slot price | Total / mo |
|---|---|---|
| 1 | Free | ¥0 |
| 2 | ¥250 | ¥250 |
| 3 | ¥240 | ¥490 |
| 4 | ¥220 | ¥710 |
| 5 | ¥200 | ¥910 |
| 6+ | ¥200 / slot | +¥200 |
Support the project
GraftQL is free for a single project. If you'd like to support it, it truly encourages development. Thank you, everyone, for your support.
You can support GraftQL on Buy Me a Coffee. More options (like GitHub Sponsors) are on the way.
Get GraftQL
Download and start your first project free. Noticed something? Tell us on GitHub anytime.