Produits S7 / 02 — ReqTone
ReqTone
Client API natif — REST · GraphQL · SSE
Un client API de bureau pour ceux qui préfèrent ne pas faire tourner un navigateur dans un navigateur. L'enveloppe est native, le réseau est en Rust sur un vrai thread, et tout ce que vous construisez tient dans un fichier SQLite local qui vous appartient.
- Enveloppe
- Tauri v2
- Cœur
- Rust + reqwest
- Stockage
- SQLite
- Version
- 0.1.0
Le produit
Pensé pour la boucle que vous faites vraiment.
Envoyer, lire, ajuster, renvoyer — quelques centaines de fois par jour. Cette boucle, c'est tout le métier ; et la plupart des clients API la relèguent derrière un service de synchronisation, un écran de connexion et une invitation à rejoindre un espace de travail.
ReqTone est construit autour de cette boucle, et de rien d'autre. Projets, dossiers et requêtes s'imbriquent aussi profondément que votre service. Chaque onglet porte la couleur de son projet, pour qu'un mur d'endpoints ouverts reste lisible d'un coup d'œil. Une URL, un en-tête ou un corps modifié affiche un marqueur avant que vous ne puissiez rien perdre, et la réouverture de l'application restaure chaque onglet, sous-onglet et brouillon exactement comme vous les aviez laissés.
Il s'adresse aux développeurs et aux équipes qui travaillent toute la journée avec des API et veulent un outil rapide, discret et entièrement à eux.
- 01 Envoyer — un seul chemin, streaming par défaut
- 02 Lire — statut, latence, taille, trames au fil de leur arrivée
- 03 Ajuster — Monaco, validation en direct, variables à portée
- 04 Recommencer — rejouer depuis un historique consultable
Ingénierie
Six décisions, avec leurs compromis assumés.
Chacune a coûté quelque chose — c'est le seul genre de décision qui mérite d'être consigné.
-
01
Une enveloppe native, pas un navigateur embarqué
ReqTone s'affiche dans la webview que le système d'exploitation fournit déjà et gère son réseau en Rust avec
reqwest, sur un vrai thread, plutôt que d'embarquer un moteur de navigateur et un environnement JavaScript avec l'application. Le coût : l'interface hérite de la webview que le système lui donne — c'est pourquoi les deux thèmes sont testés sur les trois plateformes plutôt que supposés corrects. -
02
Vos données sont un fichier qui vous appartient
Collections, arborescences de projets, environnements, profils d'authentification et historique sont des lignes dans une base SQLite ordinaire, rangée dans votre dossier applicatif. Copiez-la, comparez-la, sauvegardez-la, gardez-la sur un volume chiffré, pointez l'application vers une autre, ou ouvrez-la dans n'importe quel explorateur SQLite. L'export en JSON ou au format Postman est là aussi : partir relève de la manipulation de fichiers, pas du ticket d'assistance.
-
03
Rien n'attend le réseau au démarrage
Pas de compte, pas de vérification de licence, pas de mise à jour automatique — et une règle permanente : rien sur le chemin de démarrage ne doit dépendre d'un appel réseau. L'application s'ouvre câble débranché. Elle ne contacte que l'endpoint de votre requête, l'URL de jeton OAuth que vous avez configurée, et votre propre serveur de synchronisation si vous en activez un.
-
04
Le streaming est le chemin par défaut, pas un mode
Toutes les requêtes empruntent le même code de streaming : une réponse s'affiche à mesure qu'elle s'écrit et la fenêtre reste utilisable tant que le flux est ouvert. Il n'y a pas de type de requête « event-stream » à activer, ni de seconde implémentation qui pourrait diverger — ce qui signifie aussi qu'un
POSTavec un corps JSON est diffusé en flux, exactement ce dont la plupart des endpoints de LLM ont besoin. -
05
Les portées se résolvent dans un seul sens
Une variable se résout d'abord au niveau de la requête, puis du projet, puis du global. Un jeton de préproduction et un jeton de bac à sable peuvent tous deux s'appeler
{{token}}sans jamais vous surprendre, et le gestionnaire indique quelles valeurs sont inutilisées et si une valeur atterrit dans les paramètres, le corps ou les en-têtes. -
06
Importer et exporter relève du fichier
Les collections Postman v2.1, OpenAPI et Swagger 3.0 en JSON ou YAML, les commandes cURL brutes et les archives
.reqtones'importent toutes — avec leurs arborescences de dossiers, en-têtes, paramètres de requête, profils d'authentification et corps. L'export fonctionne de la même manière. La limite connue, ce sont les scripts : les scripts de pré-requête et de test écrits en JavaScript ne sont pas transférés.
Fonctionnalités
Tout dans la fenêtre.
Chaque sous-système ci-dessous existe pour retirer une étape à cette boucle, pas pour remplir un tableau comparatif.
Espace de travail
- Projets → dossiers → requêtes, imbriqués aussi profondément que vous le souhaitez
- Couleurs par projet — l'onglet actif porte la couleur de bordure de son projet parent
- Marqueurs de modification — une URL, un en-tête ou un corps modifié lève un indicateur
- Restauration de session — chaque onglet, sous-onglet et brouillon revient
Streaming
- Un seul chemin d'envoi — aucun mode streaming à activer
- Fragments en direct et chronomètre — utilisable tant que le flux est ouvert
- Trames inspectables — événements, données et erreurs classés à leur arrivée
- Copier n'importe quel fragment directement depuis la liste des trames
Éditeurs
- GraphQL en deux volets — la requête au-dessus, les variables en dessous, deux instances Monaco distinctes
- Noms d'opération résolus : une faute dans les variables ne passe jamais pour une erreur de requête
- Validation JSON en direct — marqueurs en ligne et pastille valide/invalide
- Formulaires et multipart — grilles clé-valeur, pièces jointes, délimiteurs gérés
Authentification
- Profils Bearer, clé d'API, Basic et OAuth2
- Définie une fois au niveau du projet, héritée par tout ce qui se trouve en dessous
- Surcharge par endpoint sans perturber les autres
- Les variables s'interpolent aussi dans les en-têtes d'authentification
Variables
- Trois portées — la requête prime sur le projet, le projet sur le global
- Valeurs inutilisées signalées dans le gestionnaire
- Usage affiché par ligne — paramètres, corps ou en-têtes
- Espace N transforme une sélection en variable à portée, Espace V en insère une
Stockage
- Un seul
db.sqlite— collections, environnements, authentification, historique - Changement d'espace de travail en un clic — bases distinctes, risques cloisonnés
- Aucun appel réseau au démarrage — pas de vérification de licence, pas de balise de mise à jour
- Portable — copiez le fichier, ou exportez en JSON propre ou au format Postman
Inspection
- Statut, latence et taille sur une ligne de pastilles au-dessus du corps
- Filtre approximatif des en-têtes — trouvez
set-cookiedans une réponse de 40 en-têtes - Cookies avec domaine, chemin et attributs présentés clairement
- Rendu binaire et aperçu PDF dans le volet de réponse
Historique
- Chaque exécution enregistrée dans un tiroir consultable, par une transaction en arrière-plan
- Rejeu — restaurez un ancien corps et ses en-têtes en un clic
- Filtrage par méthode ou statut pour isoler les échecs qui comptent
- Recherche groupée dans tout le tiroir
Mise en route
- Importe Postman v2.1, OpenAPI / Swagger 3.0, cURL brut,
.reqtone - Un agent peut écrire la collection — un prompt prêt à l'emploi, sans configuration
- Votre arborescence, pas un vidage à plat — les contrôleurs deviennent des dossiers
- Des corps d’exemple issus de vos propres DTO plutôt que des chaînes vides
Où en est le projet
Transparent sur son état d’avancement.
ReqTone est en préversion 0.1.0 et n'a pas encore été publié. L'application se compile, mais la signature de code reste le seul obstacle entre elle et un lien de téléchargement — et S7 ne distribue pas de binaires non signés à ceux qui lui font confiance.
État tel que publié sur reqtone.com
- Windows
- Compile, non publié
- macOS
- Chaîne de build non vérifiée
- Linux
- Pas encore de pipeline
- Version
- v0.1.0 — préversion
- Construit avec
- Rust · Tauri v2 · SQLite