Fonctionnement

Une enveloppe autour de tes outils, pas un fork.

OpenAxis ne reconstruit pas trois apps open-source et n'embarque pas de cloud. Il les fait tourner comme des process natifs, route leurs appels IA par un proxy local, et les style avec une couche d'injection qui survit a chaque mise a jour upstream.

ELECTRON (l'enveloppe — seul detenteur de tes vraies cles) │ ├─ Sidebar Chat · Code · Work · Design · Orchestrateur · Config │ ├─ Vues trois outils, chacun dans son process natif, │ etat preserve quand tu changes │ Work → openwork │ Code → opencode │ Design → open-design │ ├─ Une config ~/.config/opencode/opencode.json │ pointe chaque outil vers le proxy local │ ├─ Proxy :9999 127.0.0.1 uniquement · Bearer requis │ detient les vraies cles · route vers ton fournisseur │ injecte contexte projet + memoire + recherche web │ └─ Secrets secrets.enc → memoire → vars d'env au lancement (fichier chiffre, jamais en clair)
Quatre idees

Tout decoule de quatre decisions.

Chacune existe pour enlever un type de friction precis.

Une fenetre tient tout, avec l'etat intact

Chaque outil s'ouvre dans sa vue isolee. Passe de Code a Design et reviens : ta session est exactement la ou tu l'as laissee. L'enveloppe garde les outils vivants en arriere-plan au lieu de les redemarrer a chaque fois que tu changes.

Une config regle les trois outils d'un coup

Les trois outils integres tournent tous sur le meme moteur sous-jacent (OpenCode). Donc un seul fichier de config les couvre tous. Configure une fois — Work, Code et Design en heritent. Ajoute un fournisseur et chaque outil peut l'atteindre aussitot.

Un proxy detient les cles ; les outils ne voient qu'un token

Un petit serveur tourne sur 127.0.0.1:9999. Il detient tes vraies cles API, lit secrets.enc, et expose un unique point d'acces compatible OpenAI. Les outils recoivent un faux token local, jamais tes vraies cles. Le proxy route chaque appel vers le bon fournisseur. Il applique aussi une strategie de prefixe stable pour le cache DeepSeek et Anthropic — ~99% de hit rate sur les modeles DeepSeek dans Chat, Code, Work et Design, et ~80% sur l'Orchestrateur (en cours d'amelioration). C'est aussi la que la recherche web et l'injection de contexte ont lieu.

Une couche d'overrides personnalise sans forker

OpenAxis n'edite jamais la source d'un outil. Le theme unifie, les reglages natifs masques, les fonctions ajoutees — tout ca, c'est du CSS et du JS injectes au runtime. Les overrides ciblent des selecteurs stables et se reappliquent quand les apps naviguent. Un git pull upstream arrive proprement. Pas de conflit.

Apporte tes propres modeles

Cinq fournisseurs. Melange cloud et local librement.

Un seul proxy leur parle a tous. Un modele frontier pour le dur, un modele local pour le reste, change a chaque requete.

Anthropic OpenAI OpenRouter Ollama (local) Google Gemini
Natif, pas conteneurise

Zero Docker. Pas de zoo de daemons. Juste macOS.

Les outils doivent lire et ecrire tes vrais fichiers — c'est tout l'interet d'un agent de code et d'un outil de design. Donc ils tournent comme des process natifs macOS, pas dans des conteneurs. OpenAxis les demarre, fixe le bon runtime pour chacun, capture leurs ports, et les coupe avec l'app.

Rien a installer comme couche de virtualisation. Pas de fichier compose a surveiller. Tu telecharges un .dmg, tu le glisses dans Applications, et l'app gere tout ce dont elle a besoin.

Pour la spec complete — ports, modele de securite, cascade de config, catalogue des overrides — voir ARCHITECTURE.fr.md.

Telecharge. Ajoute tes cles. Cree.

Glisse OpenAxis dans ton dossier Applications, puis ajoute tes cles API dans le panneau Config. Apple Silicon, macOS 14 et plus.