Aller au contenu principal

CLI (enterprise-ai)

Ce guide montre comment installer la ligne de commande enterprise-ai, configurer un profil, puis l'utiliser pour créer, valider, tester, déployer et exécuter des agents, depuis un poste de travail ou un pipeline de CI. La CLI repose sur le SDK Python (sdks/python/src/enterprise_ai/cli). Chaque commande, option et code de sortie figure dans la référence de la CLI générée (python tools/cli/gen_reference.py, vérifiée en CI avec --check).

English version: cli.md

Vue d'ensemble​

BesoinCommandes
Configurer l'accèslogin, config, doctor
Créer un projet ou un manifestecreate, init, plugin create
Vérifier des documentsvalidate, test, plugin validate
Livrerapply, deploy, publish, plugin build, plugin sign, plugin publish, plugin install
Exécuter et observerrun, runs, logs, chat, agent inspect
Lire la plateformeget, delete, models resolve, context plan, finops, quotas, audit verify
Exploiter l'infrastructuremanager (SDK et CLI du Navin Manager)
Documenterdocs

Prérequis et compatibilité​

ÉlémentPris en charge
Python3.10 ou plus (la CLI est livrée dans le paquet enterprise-ai)
Systèmes d'exploitationLinux, macOS, Windows
Outils optionnelsopa et fga pour test authz, cosign pour publish --sign et plugin sign ; cherchés dans le PATH, puis dans EAI_TOOLCHAIN_DIR (/tmp/toolchains par défaut)
API du Control Planev1

Installation​

  1. Installez la commande. La CLI fait partie du paquet Python : récupérez-le dans Harbor comme décrit dans le guide du SDK Python, puis installez-le avec pipx (environnement propre ; pip dans un environnement virtuel convient aussi).

    oras login registry.navinspire.ai
    oras pull registry.navinspire.ai/sdk/python:1.0.2 -o sdk-python
    pipx install sdk-python/enterprise_ai-1.0.2-py3-none-any.whl
    enterprise-ai --version

    Résultat attendu : la version du paquet (1.0.2). Le registre est registry.navinspire.ai. Les réseaux hors ligne installent la même wheel depuis un dépôt de wheels, comme décrit dans le guide du SDK Python.

Démarrage rapide​

Le parcours du développeur, d'un dossier vide à un agent en cours d'exécution :

enterprise-ai login --base-url https://ai.acme.example --api-key eai_...
enterprise-ai doctor # configuration, connectivity, TLS, authentication, versions, clock (PASS, WARN, FAIL)
enterprise-ai create agent ticket-helper --template agent-basic # also rag-agent; create mcp|connector|policy|skill|prompt
cd ticket-helper && enterprise-ai validate -f agent.yaml
enterprise-ai test authz # opa test on policies/ and fga model test on *.fga.yaml (missing binary = error)
enterprise-ai test security --threshold 0 # red team run (POST /v1/redteam/runs), exit 1 above the threshold
enterprise-ai test sdk-conformance # contracts/v1 of the SDK against the endpoint
enterprise-ai deploy agent -f agent.yaml --env dev
enterprise-ai run start ticket-helper --task "Summarise this ticket" --follow # prints the run id and its trace id
enterprise-ai docs --write cli-reference.md

Chaque étape, dans l'ordre : enregistrer les identifiants dans un profil ; vérifier la configuration ; créer un projet ; valider le manifeste contre contracts/v1 ; lancer les tests de politiques et de modèle ; lancer le red team ; vérifier la conformité du SDK ; déployer en dev après la quality gate ; lancer un run et suivre ses événements ; écrire la référence de la CLI installée. Chaque modèle contient AGENTS.md et RULES.md (règles pour les agents de code : aucun secret, aucun appel direct à un LLM hors du gateway, tests obligatoires, anglais et français), des manifestes valides contre contracts/v1, des politiques OPA avec leurs tests, des tests unitaires et un README en anglais et en français.

Le Developer Studio du portail modifie les mêmes objets (prompts, skills, MCP, connecteurs, politiques) avec l'éditeur Monaco, intégré au portail (aucun CDN, prêt pour un réseau isolé) : ses workers sont des fichiers de même origine autorisés par worker-src 'self' blob: et ses styles en ligne par le style-src existant, donc la Content Security Policy ne change pas (vérifié dans portal/tests/security.test.ts).

Configuration​

La CLI range les profils dans ~/.config/enterprise-ai/config.yaml (écrit de façon atomique, mode 0600, dossier 0700). Un réglage est pris, du plus prioritaire au moins prioritaire, dans l'option (--base-url, --lang), le profil choisi (--profile, sinon EAI_PROFILE, sinon le profil courant), puis les variables EAI_* lues par le SDK Python.

RéglageClé du profilVariable d'environnementDéfaut
URL du Control Planebase_urlEAI_BASE_URLhttp://127.0.0.1:8000
Clé APIapi_keyEAI_API_KEYaucune
Jeton OIDCtokenEAI_TOKENaucun
Tenant, utilisateur et rôles de développementtenant, dev_user, dev_rolesEAI_TENANT, EAI_DEV_USER, EAI_DEV_ROLESaucun
Projet, environnementproject, environmentEAI_PROJECT, EAI_ENVIRONMENTaucun
LanguelocaleEAI_LOCALEen
Autorités de certification supplémentairesaucuneEAI_CA_BUNDLEaucune
Dossier des profilsaucuneEAI_CONFIG_DIR, sinon XDG_CONFIG_HOME/enterprise-ai~/.config/enterprise-ai
Profil choisiaucuneEAI_PROFILEle profil courant

Options globales de chaque commande : --lang en|fr, --output table|json|yaml (-o, table par défaut), --profile <nom>, --base-url <url>.

enterprise-ai config list
enterprise-ai config set project invoices
enterprise-ai config use staging
enterprise-ai config show --output yaml

Authentification​

enterprise-ai login enregistre les identifiants dans un profil ; --check appelle GET /v1/me juste après.

MéthodeCommande
Clé APIenterprise-ai login --base-url <url> --api-key <token> --check
Jeton OIDCEAI_TOKEN=<token> enterprise-ai doctor (lu dans l'environnement), ou la clé token du profil
Mode développement (serveur avec EAI_AUTH_DEV=1)enterprise-ai login --dev --tenant acme --user alice --roles tenant_admin

<url> est l'adresse du Control Plane et <token> la clé API de votre tenant. config show masque la clé et le jeton.

Erreurs et codes de sortie​

Les erreurs de l'API affichent le code, le message dans la langue choisie et l'identifiant de requête sur stderr.

Code de sortieSignification
0succès
1échec de validation, de quality gate, de test ou de contrôle (aussi une validation_error de l'API)
2erreur d'utilisation (option inconnue, fichier absent)
3erreur de l'API (réseau, authentification, serveur)

Le groupe manager a ses propres codes, de 0 à 7 (SDK et CLI du Navin Manager).

Reprises, délais et pagination​

La CLI utilise le transport du SDK Python : 30 s par tentative, 3 reprises avec délai sur HTTP 429, et sur les 5xx et les erreurs réseau pour les appels sans risque (SDK Python). Les commandes de liste lisent une page : get --limit, runs --limit.

Commandes​

CommandeRôleAPI
enterprise-ai loginenregistrer les identifiants dans un profil/v1/me
enterprise-ai configlister, afficher, choisir ou modifier des profilsaucune
enterprise-ai initcréer un manifeste et du code de départaucune
enterprise-ai createcréer un projet ou une ressource depuis un modèleaucune
enterprise-ai validatevalider des manifestes et des documents contre les contrats/v1/contracts/{name}/validate
enterprise-ai applyappliquer des manifestes/v1/manifests/apply
enterprise-ai getlire des ressources ou exporter un manifeste/v1/manifests/{kind}/{name}
enterprise-ai deletesupprimer une ressource/v1/agents/{id}, /v1/tools/{name}
enterprise-ai testsuite d'évaluation, red team, tests OPA et OpenFGA, conformité du SDK/v1/evaluations/runs, /v1/redteam/runs
enterprise-ai publishpublier une skill ou un plugin avec son empreinte/v1/skills, /v1/plugins
enterprise-ai deployappliquer et promouvoir un agent après la quality gate/v1/manifests/apply, /v1/evaluations/gates/check
enterprise-ai agent inspectinspecter un agent/v1/agents/{id}
enterprise-ai runlancer un run d'un agent déployé et suivre ses événements/v1/agents/{id}/runs, /v1/runs/{id}/events
enterprise-ai runslister, afficher, annuler ou rejouer des runs (--state, alias --status)/v1/runs, /v1/runs/{id}/cancel
enterprise-ai logsdiffuser les événements d'un run/v1/runs/{id}/events
enterprise-ai chatdialoguer par le gateway/v1/gateway/chat/completions
enterprise-ai models resolveparamètres natifs ou refus/v1/models/resolve
enterprise-ai context plancalculer un budget de contexte (--local sans l'API)/v1/context/plan
enterprise-ai finopssynthèse et estimation des coûts/v1/finops/summary, /v1/finops/estimate
enterprise-ai quotasquotas et consommation/v1/quotas, /v1/quotas/usage
enterprise-ai audit verifyvérifier la chaîne de hachage de l'audit/v1/audit/verify
enterprise-ai pluginpacks de la Marketplace : créer, valider, construire, signer, publier, installer/v1/marketplace/packages
enterprise-ai doctorconfiguration, connectivité, TLS, authentification, versions, horloge/healthz, /v1/me, /v1/meta, /v1/contracts
enterprise-ai docsafficher ou écrire la référence de la CLIaucune
enterprise-ai managerNavin Manager : hôtes, clusters, services, HA, sauvegardes, restaurations, PRA/api/v1 du Navin Manager

Exemples​

enterprise-ai login --base-url <control-plane-url> --lang en
enterprise-ai config set project invoices
enterprise-ai init agent invoice-agent
enterprise-ai validate -f ./manifests/agent.yaml
enterprise-ai apply -f ./manifests/agent.yaml
enterprise-ai get agents --output json
enterprise-ai test --suite invoice-agent-regression --target agent/agt_ap@1.4.0
enterprise-ai deploy agent -f ./manifests/agent.yaml --env prod
enterprise-ai runs list --agent agt_ap --state running --output table
enterprise-ai logs run_42
enterprise-ai chat --model gpt-4o-mini
enterprise-ai models resolve o3-mini --effort high --output yaml
enterprise-ai context plan --window 128000 --output-tokens 4000 --segments ./segments.json
enterprise-ai finops estimate --provider openai --model gpt-4o-mini --input-tokens 12000 --output-tokens 2000
enterprise-ai finops summary --group-by agent
enterprise-ai quotas usage
enterprise-ai audit verify --output json
enterprise-ai delete tool erp.lookup

Utilisation en CI​

Un job de pipeline valide les manifestes, lance la suite de régression et promeut l'agent. Les identifiants viennent du coffre de secrets de la CI sous forme de variables d'environnement ; rien n'est écrit dans le dépôt.

quality-gate:
script:
- enterprise-ai validate -f ./manifests/agent.yaml --output json
- enterprise-ai test --suite regression --target agent/$AGENT@$VERSION
- enterprise-ai deploy agent -f ./manifests/agent.yaml --env staging
variables:
EAI_BASE_URL: <control-plane-url>
EAI_LOCALE: en

EAI_API_KEY est déclarée comme variable masquée de la CI. Un code de sortie non nul arrête le job.

Sécurité​

  • Le fichier de configuration est écrit de façon atomique avec le mode 0600 (dossier 0700) ; un avertissement s'affiche quand il est lisible par le groupe ou par tous.
  • config show masque la clé API et le jeton.
  • Les fichiers YAML (manifestes, profils) sont lus avec un chargeur sûr qui refuse les ancres, les alias, les tags Python et les documents de plus de 1 Mio.
  • init <kind> <name> : le nom doit respecter ^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$ ; les fichiers ne sont écrits que dans le dossier cible, jamais à travers un lien symbolique.
  • publish --sign appelle cosign sign-blob avec une liste d'arguments (sans shell), -- avant le chemin de l'artefact, une référence de clé validée et une empreinte sha256:<64 hex> validée.
  • chat et logs affichent la sortie du modèle en texte brut : les séquences d'échappement ANSI sont retirées et les caractères de contrôle échappés, donc une réponse du modèle ne peut pas piloter le terminal.

Dépannage​

SymptômeCauseCorrection
doctor signale TLS FAILautorité de certification privée non reconnuerenseignez EAI_CA_BUNDLE avec le fichier PEM de l'autorité
code de sortie 3 avec unauthenticatedclé ou jeton absent ou expirérelancez enterprise-ai login --api-key <token> --check
avertissement sur un fichier de configuration lisiblemode plus large que 0600chmod 600 ~/.config/enterprise-ai/config.yaml
test authz échoue faute de binaireopa ou fga absentinstallez-les dans le PATH ou dans EAI_TOOLCHAIN_DIR

Référence​