|
### 🎨 Prompt → Canevas
Décrivez n'importe quelle interface en langage naturel. Regardez-la apparaître sur le canevas infini en temps réel avec une animation en streaming. Modifiez des designs existants en sélectionnant des éléments et en conversant.
|
### 🤖 Équipes d'agents concurrents
L'orchestrateur décompose les pages complexes en sous-tâches spatiales. Plusieurs agents IA travaillent simultanément sur différentes sections — hero, fonctionnalités, pied de page — le tout en streaming parallèle.
|
|
### 🧠 Intelligence multi-modèles
S'adapte automatiquement aux capacités de chaque modèle. Claude obtient des prompts complets avec réflexion ; GPT-4o/Gemini désactivent la réflexion ; les modèles plus petits (MiniMax, Qwen, Llama) reçoivent des prompts simplifiés pour une sortie fiable.
|
### 🔌 Serveur MCP
Installation en un clic dans les CLI Claude Code, Codex, OpenCode, Kiro ou Copilot. Designez depuis votre terminal — lisez, créez et modifiez des fichiers `.op` via tout agent compatible MCP.
|
|
### 📦 Design-as-Code
Les fichiers `.op` sont du JSON — lisibles par l'humain, compatibles Git, comparables. Les variables de design génèrent des propriétés personnalisées CSS. Export de code vers React + Tailwind ou HTML + CSS.
|
### 🖥️ Fonctionne partout
Application web + bureau natif sur macOS, Windows et Linux — un seul cœur Rust, un binaire unique autonome, sans moteur de navigateur. Association de fichiers `.op` — double-cliquez pour ouvrir.
|
|
### ⌨️ CLI — `op`
Contrôlez l'outil de design depuis le terminal. `op design`, `op insert` — DSL de design par lots, manipulation de nœuds. Entrée par pipe depuis des fichiers ou stdin. Fonctionne avec l'app de bureau ou le serveur web.
|
### 🎯 Export de Code Multi-Plateforme
Exportez depuis un seul fichier `.op` vers React + Tailwind, HTML + CSS, Vue, Svelte, Flutter, SwiftUI, Jetpack Compose, React Native. Les variables de design deviennent des propriétés CSS personnalisées.
|
## Installation
**macOS (Homebrew) :**
```bash
brew tap zseven-w/openpencil
brew install --cask openpencil
```
**Windows (Scoop) :**
```powershell
scoop bucket add openpencil https://github.com/zseven-w/scoop-openpencil
scoop install openpencil
```
**Téléchargement direct Linux / Windows :** [GitHub Releases](https://github.com/ZSeven-W/openpencil/releases) — `.exe` (Windows), `.AppImage` / `.deb` (Linux)
**Nix (Linux x86_64) :**
```bash
nix develop
nix run . # lancer l'application de bureau
nix build .#openpencil # hôte web natif + bundle web CanvasKit
nix build .#op-cli # la CLI `op`
nix build .#prebuilt # utiliser l'archive de bureau upstream correspondante
nix build .#prebuilt-cli # utiliser l'archive CLI upstream correspondante
nix build .#web-server # serveur web natif sans GL + bundle web
nix build .#runtime-prebuilt # runtime précompilé bureau + CLI `op`
nix build .#web-sdk-packages # archives npm des SDK web
nix build .#appimage # AppImage de bureau portable
```
Le flake utilise la toolchain Rust épinglée dans `rust-toolchain.toml` et est
actuellement publié pour `x86_64-linux`. Le flake ne produit pas encore de
paquet Debian ; utilisez les artefacts de la release upstream lorsqu'un `.deb`
est nécessaire. Les sorties `prebuilt` utilisent la version de release et les
hashes épinglés dans `nix/release-manifest.json`, indépendamment de la version
source du workspace. Après la publication d'une release, le workflow de release
ouvre une PR pour actualiser ce manifeste. Jusqu'à sa fusion, les sorties
précompilées continuent d'utiliser la release publiée précédente ; les sorties
compilées depuis les sources utilisent toujours le code extrait.
**CLI (`op`) :**
```bash
brew install zseven-w/openpencil/op
```
Ou utilisez le script d'installation (macOS / Linux) :
```bash
curl -fsSL https://raw.githubusercontent.com/ZSeven-W/openpencil/main/scripts/install-op.sh | bash
```
Pour autoriser la préversion la plus récente :
```bash
curl -fsSL https://raw.githubusercontent.com/ZSeven-W/openpencil/main/scripts/install-op.sh | OP_PRERELEASE=1 bash
```
Windows PowerShell :
```powershell
irm https://raw.githubusercontent.com/ZSeven-W/openpencil/main/scripts/install-op.ps1 | iex
```
Pour autoriser la préversion la plus récente :
```powershell
$env:OP_PRERELEASE = "1"; irm https://raw.githubusercontent.com/ZSeven-W/openpencil/main/scripts/install-op.ps1 | iex
```
## Clonage (avec les sous-modules)
```bash
git clone --recurse-submodules https://github.com/ZSeven-W/openpencil.git
# Déjà cloné ? Synchronisez d'abord pour que les anciennes URL prennent en compte les modifications de .gitmodules :
git submodule sync --recursive && git submodule update --init --recursive
```
Trois sous-modules se trouvent sous `vendor/`. Ils sont tous publics et récupérés via HTTPS (aucune clé SSH nécessaire) : `jian` (framework UI GPU-Skia — widgets/rendu/événements), `casement` (fork de winit) et `agent` (`agent-rs` — runtime d'agents Rust partagé entre produits, utilisé par OP et Zode). `vendor/anthropic-agent-sdk` est suivi directement dans le dépôt et n'est pas un sous-module.
## Démarrage rapide
```bash
# Web dev server (builds the CanvasKit wasm bundle, then runs the headless web host)
bash scripts/start-web-rust.sh
```
Ou lancer en tant qu'application de bureau :
```bash
cargo run -p op-host-desktop
```
> **Prérequis :** [Rust](https://www.rust-lang.org/) (stable) pour compiler le produit. [Bun](https://bun.sh/) >= 1.0 et [Node.js](https://nodejs.org/) >= 18 ne sont nécessaires que pour le SDK web dans `packages/`.
### Docker
Les releases Rust taguées publient une seule image web host. Les anciennes images TypeScript avec des CLI IA intégrés ne sont plus publiées.
| Image | Contenu |
| --- | --- |
| `ghcr.io/zseven-w/openpencil-web:vX.Y.Z` | Rust web host, wasm bundle et ressources CanvasKit |
L'interface web expose uniquement les profils d'agents intégrés ; les outils Claude/Codex/OpenCode/Copilot CLI ne sont pas inclus dans les images Docker.
**Exécuter :**
```bash
VERSION="$(scripts/workspace-version.sh)"
docker run -d -p 3100:3100 "ghcr.io/zseven-w/openpencil-web:v${VERSION}"
```
Ouvrez ensuite `http://localhost:3100/`.
**Compiler localement :**
```bash
docker build -f Dockerfile.web-rust -t openpencil-web-rust .
docker run -p 3100:3100 openpencil-web-rust
```
## Design natif IA
**Du prompt à l'interface**
- **Texte vers design** — décrivez une page, elle est générée en temps réel sur le canevas avec une animation en streaming
- **Orchestrateur** — décompose les pages complexes en sous-tâches spatiales pour une génération parallèle
- **Modification de design** — sélectionnez des éléments, puis décrivez les modifications en langage naturel
- **Entrée vision** — joignez des captures d'écran ou des maquettes pour un design basé sur des références
**Support multi-agents**
| Agent | Configuration |
| ----------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| **Intégré (9+ fournisseurs)** | Choisissez parmi les préréglages de fournisseurs avec sélecteur de région — Anthropic, OpenAI, Google, DeepSeek et plus |
| **Claude Code** | Aucune configuration — utilise le Claude Agent SDK avec OAuth local |
| **Codex CLI** | Connecter dans les Paramètres de l'agent (`Cmd+,`) |
| **OpenCode** | Connecter dans les Paramètres de l'agent (`Cmd+,`) |
| **GitHub Copilot** | `copilot login` puis connecter dans les Paramètres de l'agent (`Cmd+,`) |
**Profils de capacités des modèles** — adapte automatiquement les prompts, le mode de réflexion et les délais d'attente par niveau de modèle. Les modèles de niveau complet (Claude) reçoivent des prompts complets ; le niveau standard (GPT-4o, Gemini, DeepSeek) désactive la réflexion ; le niveau basique (MiniMax, Qwen, Llama, Mistral) reçoit des prompts JSON imbriqués simplifiés pour une fiabilité maximale.
**i18n** — Localisation complète de l'interface en 15 langues : English, 简体中文, 繁體中文, 日本語, 한국어, Français, Español, Deutsch, Português, Русский, हिन्दी, Türkçe, ไทย, Tiếng Việt, Bahasa Indonesia.
**Serveur MCP**
- Serveur MCP intégré (crate `op-mcp`) — installation en un clic dans les CLI Claude Code / Codex / OpenCode / Kiro / Copilot
- Aucun besoin de Node.js — transport stdio via le binaire de bureau (`--mcp