
Cadre OSINT automatisé pour la reconnaissance, la collecte de données et le renseignement sur les menaces, avec des robots d'exploration, des scanners et des pipelines d'extraction modulaires.
Un harnais d'agent d'investissement vibe
LangAlpha est conçu pour aider à interpréter les marchés financiers et soutenir les décisions d'investissement.
Démarrage • Documentation API • Noyau de l'agent • Backend • Web • TUI • Compétences • MCP
Épinglez un briefing d'actualités sélectionné depuis le tableau de bord, lancez la génération d'idées et dépêchez des sous-agents parallèles pour analyser le marché — puis obtenez cinq idées de paires long/short dans un tableau de bord interactif intégré, calibré selon votre portefeuille.
Chaque outil d'IA financière aujourd'hui traite l'investissement comme un one-shot : posez une question, obtenez une réponse, passez à autre chose. Mais le véritable investissement est bayésien — vous commencez par une thèse, de nouvelles données arrivent chaque jour, et vous mettez à jour votre conviction en conséquence. C'est un processus itératif qui se déroule sur des semaines et des mois : affiner les thèses, revisiter les positions, superposer de nouvelles analyses sur les anciennes. Aucune invite unique ne peut capturer cela.
Inspiré du génie logiciel : une base de code persiste, et chaque commit s'appuie sur ce qui précède. Les harnais d'agents de code comme Claude Code et OpenCode ont réussi en construisant des agents qui adoptent ce modèle, explorant le contexte existant et s'appuyant sur les travaux antérieurs. LangAlpha apporte la même idée : donnez à l'agent un espace de travail persistant, et la recherche se cumule naturellement.
En pratique, vous créez un espace de travail par objectif de recherche ("rééquilibrage T2", "analyse approfondie de la demande des centres de données", "rotation sectorielle énergétique"). L'agent vous interroge sur vos objectifs et votre style, produit sa première livraison et enregistre tout dans le système de fichiers de l'espace de travail. Revenez demain, vos fichiers, vos fils de discussion et vos recherches accumulées sont toujours là.
agent.md) qui cumule la recherche entre sessions et fils de discussion. Un magasin de mémoire à long terme séparé (.agents/user/memory/, .agents/workspace/memory/) conserve les préférences durables des utilisateurs et les connaissances inter-sandbox, et un magasin de mémos géré par l'utilisateur (.agents/user/memo/) vous permet de télécharger des PDF et des notes de recherche en Markdown que l'agent peut lire à la demande.Architecture système```mermaid %%{init: {'theme': 'neutral'}}%%
flowchart TB
Web["Web UI
React 19 · Vite · Tailwind"] -- "REST · SSE" --> API
Web -- "WebSocket" --> WSP
CLI["CLI / TUI"] -- "REST · SSE" --> API
subgraph Server ["FastAPI Backend"]
API["API Routers<br/>Threads · Workspaces · Market Data<br/>OAuth · Automations · Skills"]
WSP["WebSocket Proxy"]
API --> ChatHandler["Chat Handler<br/>LLM Resolution · Workflow Dispatch"]
ChatHandler --> BTM["Background Task Manager<br/>Decoupled Execution · Workflow Lifecycle"]
end
subgraph PostgreSQL ["PostgreSQL — Dual Pool"]
AppPool[("App Data<br/>Users · Workspaces · Threads<br/>Turns · BYOK Keys · Automations")]
CheckPool[("LangGraph Checkpointer<br/>Agent State · Checkpoints")]
end
subgraph Redis ["Redis"]
EventBuf[("SSE Event Buffer<br/>150K events · Reconnect Replay")]
DataCache[("API Cache<br/>Market Data · SWR")]
Steering[("Steering Queue<br/>User Messages Mid-workflow")]
end
BTM --> AppPool
BTM --> CheckPool
BTM --> EventBuf
BTM --> Steering
API --> DataCache
BTM -. "Sandbox API" .-> Daytona["Daytona<br/>Cloud Sandboxes"]
API -. "REST" .-> FinAPIs["Financial APIs<br/>FMP · SEC EDGAR"]
WSP -. "WebSocket" .-> GData["ginlix-data<br/>Polygon.io · Massive"]
### Couche de modèles multi-fournisseurs
LangAlpha fonctionne sur une couche de modèles indépendante du fournisseur qui fait abstraction de plusieurs backends LLM. La même pile middleware, les mêmes outils et flux de travail fonctionnent quel que soit le modèle qui les pilote. Il est livré avec deux modes :
- **Mode PTC** pour une recherche d'investissement approfondie en plusieurs étapes. Un raisonnement solide pilote une analyse multi-étapes où l'agent planifie son approche, réfléchit aux données financières et écrit du code pour une analyse complexe. Un contexte long lui permet de recouper les dépôts SEC et les rapports de recherche en une seule passe.
- **Mode Flash** pour des réponses conversationnelles rapides et l'orchestration de l'espace de travail : consultations rapides du marché, graphiques et chat dans MarketView, questions-réponses légères, et un secrétaire qui gère les espaces de travail, envoie des analyses PTC approfondies en arrière-plan et relaie les résultats via une conversation naturelle.
**Apportez votre propre modèle** — Utilisez directement vos abonnements IA existants et vos clés API. Connectez vos abonnements ChatGPT ou Claude via OAuth (OpenAI Codex OAuth, Claude Code OAuth), utilisez des plans de codage de Kimi (Moonshot), GLM (Zhipu), MiniMax ou Doubao (Volcengine), ou fournissez vos propres clés API pour tout fournisseur pris en charge via BYOK. Toutes les clés sont chiffrées au repos via PostgreSQL pgcrypto (voir [Sécurité](#security)).
**Résilience du modèle** — nouvelles tentatives automatiques en cas d'erreurs transitoires, puis basculement vers un modèle de secours configuré. L'effort de raisonnement (`low`/`medium`/`high`) est normalisé automatiquement entre les fournisseurs.
### Appel d'outil programmatique (PTC) et architecture de l'espace de travail
La plupart des agents IA interagissent avec les données via des appels d'outils JSON ponctuels qui déversent le résultat directement dans la fenêtre de contexte. L'appel d'outil programmatique inverse cela : au lieu de passer des données brutes via le LLM, l'agent écrit et exécute du code dans un sandbox cloud [Daytona](https://www.daytona.io/) qui traite les données localement et ne renvoie que le résultat final. Cela réduit considérablement le gaspillage de tokens tout en permettant une analyse qui dépasserait autrement les limites de contexte.
**Flux d'exécution PTC**```mermaid
%%{init: {'theme': 'neutral'}}%%
flowchart LR
LLM["LLM"] -- "1 — Writes Python" --> EC["ExecuteCode Tool"]
EC -- "2 — Sends to sandbox" --> Run["Code Runner"]
subgraph Sandbox ["Daytona Cloud Sandbox"]
Run -- "3 — import tools.*" --> Wrappers["Generated Wrappers<br/>One module per MCP server"]
Wrappers -- "4 — JSON-RPC stdio" --> MCP["MCP Servers<br/>Subprocesses in sandbox"]
end
MCP -- "5 — REST / WS" --> APIs["Financial APIs<br/>FMP · Yahoo · Polygon"]
APIs -- "6 — Data" --> MCP
Run -- "7 — stdout · charts · files" --> EC
EC -- "8 — Result" --> LLM
En outre, l'environnement de l'espace de travail permet la persistance au-delà d'une seule session. Chaque sandbox possède une structure de répertoires organisée — work/<task>/ pour les zones de travail par tâche (données, graphiques, code), results/ pour les rapports finalisés et data/ pour les ensembles de données partagés — de sorte que les résultats intermédiaires survivent entre les sessions. À la racine se trouve agent.md, un fichier de notes de l'espace de travail que l'agent maintient entre les fils de discussion : objectifs de l'espace de travail, principales découvertes, un index des fils et un index des fichiers des artefacts importants. Une couche middleware injecte agent.md dans chaque appel de modèle, afin que l'agent ait toujours le contexte complet des travaux antérieurs sans avoir à relire les fichiers. Orthogonalement, un système de mémoire à long terme basé sur un magasin (.agents/user/memory/, .agents/workspace/memory/) capture les préférences durables de l'utilisateur et les connaissances inter-sandbox qui survivent aux réinitialisations de l'espace de travail, et un magasin de mémos géré par l'utilisateur (.agents/user/memo/) contient les documents que vous téléchargez — les PDF sont extraits textuellement côté serveur et les métadonnées sont générées de manière asynchrone par un LLM afin que l'agent puisse les trouver et les citer par sujet. Chaque espace de travail prend en charge plusieurs fils de conversation liés à un seul objectif de recherche.
Chaque espace de travail correspond à un sandbox persistant — organisez la recherche par thème, portefeuille ou thèse.
L'agent écrit du code pour construire des tableaux de bord interactifs — ici, un calendrier des catalyseurs Mag 7 + Semiconducteurs.
Bien que PTC excelle dans les tâches complexes comme le traitement de données en plusieurs étapes, la modélisation financière et la création de graphiques, lancer une exécution de code pour chaque recherche de données est excessif. C'est pourquoi nous avons également construit un ensemble d'outils de données financières natifs qui transforment les données fréquemment utilisées dans un format digestible par LLM. Ces outils sont également accompagnés d'artefacts qui s'affichent directement dans le frontend, offrant à la couche humaine un contexte visuel immédiat parallèlement à l'analyse de l'agent.
Outils natifs pour une référence rapide via des appels directs aux outils :
Serveurs MCP pour les données brutes consommées via l'exécution de code PTC :
L'agent choisit automatiquement la couche appropriée : outils natifs pour les recherches rapides qui tiennent dans le contexte, outils MCP lorsque la tâche nécessite un traitement en masse de données, des graphiques ou une analyse de tendances sur plusieurs années dans le sandbox.
Les serveurs MCP sont configurables par espace de travail. Les serveurs intégrés peuvent être désactivés individuellement, et des serveurs HTTP ou stdio personnalisés — y compris ceux qui lisent les identifiants du coffre de l'espace de travail — peuvent être ajoutés via l'API ou l'interface utilisateur, prenant effet en quelques secondes sans redémarrage.
LangAlpha prend en charge une hiérarchie de fournisseurs de données à trois niveaux. Chaque niveau est optionnel — le système se dégrade gracieusement lorsque les niveaux supérieurs sont indisponibles :
Tous les niveaux sont activés par défaut. Pour fonctionner avec uniquement les données gratuites (Yahoo Finance), exécutez make config avec la sélection proposée. Vous pouvez également modifier agent_config.yaml manuellement.
[!NOTE] Les données Yahoo Finance proviennent de la communauté et ont des limites : pas de données intraday en dessous d'intervalles d'une heure, cotations différées, couverture macro limitée et limitation de débit occasionnelle. Une
FMP_API_KEYest fortement recommandée (niveau gratuit disponible).
L'agent est livré avec 23 compétences de recherche financière pré-construites, chacune activable par commande slash ou détection automatique. Les compétences suivent la Spécification Agent Skills et peuvent être étendues en déposant un fichier SKILL.md dans l'espace de travail.
Remerciements : certaines compétences sont adaptées de anthropics/financial-services-plugins.
La compétence Analyse des comparables livre un modèle Excel et un rapport PDF — avec des fourchettes de prix implicites issues des multiples du groupe de pairs.
L'agent lit nativement les images (PNG, JPG, GIF, WebP) et les PDF — le middleware multimodal intercepte les lectures de fichiers, télécharge le contenu depuis le sandbox ou des URL, et l'injecte sous forme de base64 dans la conversation pour une interprétation visuelle directe. Dans MarketView, le graphique en chandeliers en direct de l'utilisateur peut être capturé et envoyé à l'agent comme contexte multimodal — la capture inclut à la fois l'image du graphique et des métadonnées structurées (symbole, intervalle, OHLCV, moyennes mobiles, RSI, fourchette sur 52 semaines) afin que l'agent puisse raisonner à la fois sur le motif visuel et les données sous-jacentes.
MarketView envoie le graphique en direct à l'agent pour une analyse technique en temps réel.
Demandez à l'agent d'annoter le graphique MarketView et il dessine directement sur le canevas — niveaux de prix, lignes de tendance, retracements de Fibonacci, badges d'événements, rectangles et marqueurs de texte. Les annotations sont diffusées en direct via SSE, persistent par espace de travail et par paire symbole:intervalle (un dessin sur NVDA:1day reste séparé de NVDA:1hour), et se rejouent lors de la reconnexion. Lorsque la conversation a lieu en dehors de MarketView, le transcript du chat montre une mini-carte d'aperçu avec la légende des annotations et un lien en un clic vers le graphique en direct. La compétence d'annotation de graphique se charge automatiquement chaque fois qu'un message est envoyé depuis MarketView, de sorte que l'agent sait toujours à quel ticker et intervalle « le graphique » fait référence.
L'agent peut planifier ses propres tâches depuis une conversation — aucune interface utilisateur séparée n'est nécessaire. Les utilisateurs peuvent également gérer les automatisations depuis la page dédiée Automatisations avec CRUD complet, historique d'exécution et déclencheur manuel. Tous les types d'automatisation partagent le même AutomationExecutor, un mode agent configurable (PTC ou Flash) et une désactivation automatique après des échecs consécutifs.
Basées sur le temps — Expressions cron standards pour les planifications récurrentes (« exécuter cette analyse tous les lundis à 9h ») et planification datetime ponctuelle pour des exécutions futures uniques.
Déclenchées par le prix — Définissez un objectif de prix ou un mouvement en pourcentage sur n'importe quelle action ou indice majeur, et l'agent exécute vos instructions dès que la condition est remplie. Un PriceMonitorService s'abonne à une connexion WebSocket en amont partagée vers ginlix-data pour les ticks en temps réel (actions sur le niveau temps réel, indices sur le niveau différé). La déduplication basée sur Redis empêche les déclenchements en double sur plusieurs instances de serveur.
| Condition | Exemple |
|---|---|
| Prix au-dessus / en dessous | Déclencher quand AAPL dépasse 200 $ |
| Variation en pourcentage au-dessus/en dessous | Déclencher quand SPX évolue de +2 % par rapport à la clôture précédente |
Les conditions peuvent être combinées (logique ET), et chaque automatisation de prix prend en charge le mode ponctuel (déclenché une fois) ou récurrent avec un délai configurable (minimum 4 heures, ou une fois par jour de bourse par défaut).
[!NOTE] Les automatisations déclenchées par le prix nécessitent le flux WebSocket en temps réel de ginlix-data. Pendant la bêta, cette fonctionnalité est disponible exclusivement sur la plateforme hébergée. Un support plus large des sources de données WebSocket est prévu pour les versions futures.
Planifiez des recherches récurrentes — ici, les analyses pré-résultats Mag 7 s'exécutent automatiquement avant chaque rapport.
Architecture de l'agent```mermaid %%{init: {'theme': 'neutral'}}%%
flowchart TB subgraph Orchestrator ["BackgroundSubagentOrchestrator"] direction TB Agent["Main Agent · LangGraph ReAct"] end
Agent -- "Task(init · update · resume)" --> SubPool
SubPool -- "results" --> Orchestrator
subgraph SubPool ["Subagent Pool — Parallel Async"]
direction LR
S1["general-purpose"]
S2["research"]
S3["user-defined"]
end
subgraph Middleware ["Middleware Stack"]
direction LR
MW1["Tool Safety<br/>Leak Detection<br/>Protected Paths<br/>Error Handling"]
MW2["Context & Skills<br/>agent.md Injection<br/>Skill Loading<br/>Multimodal"]
MW3["Coordination<br/>HITL · Plan Mode<br/>Steering<br/>Subagent Dispatch"]
MW4["Resilience<br/>Compaction<br/>Retry + Fallback<br/>Prompt Caching"]
end
Agent -- "wraps model + tool calls" --> Middleware
Middleware --> LLM["Multi-Provider LLM<br/>OpenAI · Anthropic · Gemini · DeepSeek<br/>Qwen · Kimi · Doubao · GLM · MiniMax · ..."]
Agent <--> Tools
subgraph Tools ["Tool Layer"]
direction LR
T1["execute_code<br/>bash"]
T2["Filesystem<br/>read · write · edit<br/>glob · grep"]
T3["Finance<br/>Market Data · SEC<br/>Options · Screener"]
T4["Web<br/>Search · Fetch"]
T5["ShowWidget<br/>Inline HTML"]
end
T1 <--> Workspace
T2 <--> Workspace
subgraph Workspace ["Workspace — Daytona Sandbox"]
direction LR
W1["agent.md<br/>Workspace Notes"]
W2["work/‹task›/<br/>data · charts"]
W3["results/<br/>Reports"]
W4["tools/<br/>MCP Wrappers"]
end
### Essaim d'agents
L'agent central fonctionne sur [LangGraph](https://github.com/langchain-ai/langgraph) et génère des sous-agents asynchrones parallèles via un outil `Task()`. Les sous-agents s'exécutent simultanément avec des fenêtres de contexte isolées, évitant la dérive dans les longues chaînes de raisonnement. Chaque sous-agent renvoie des résultats synthétisés à l'agent principal, gardant l'orchestrateur léger. L'agent principal peut choisir d'attendre le résultat d'un sous-agent ou de continuer d'autres travaux en attente. Vous pouvez également passer à la vue **Sous-agents** dans l'interface pour suivre leur progression en temps réel (uniquement sur le frontend web).
Au-delà d'une simple répartition, l'agent principal peut envoyer des instructions complémentaires à un sous-agent encore en cours d'exécution, ou reprendre un sous-agent terminé avec tout son contexte pour un raffinement itératif. Si le serveur redémarre, l'état du sous-agent est automatiquement reconstruit à partir de son dernier point de contrôle.
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/13458/dd8d54f3a8879372cf72c8a05d6ecce70c53ed0d86c8aed6a49c49276d4f97e4.png" alt="Sous-agents parallèles explorant la chaîne de calcul du centre de données avec une frise chronologique interactive de l'IA" width="800" />
</p>
<p align="center"><em>Les sous-agents de recherche s'exécutent en parallèle sur la chaîne de calcul — leurs résultats fusionnent en une frise chronologique interactive de l'IA couvrant NVIDIA, Google, AMD, AWS et le reste de l'industrie.</em></p>
### Stack de middleware
L'agent intègre une stack de middleware, comprenant :
- **Pilotage en direct** — les agents peuvent faire des erreurs de direction, poursuivre des données non pertinentes ou mal interpréter votre intention en cours d'analyse. Le pilotage vous permet de corriger le cap sans attendre. Envoyez un message de suivi à tout moment pendant que l'agent travaille — instructions mises à jour, clarifications ou questions entièrement nouvelles — et l'agent le prend en compte avant sa prochaine étape, comme si vous l'aviez dit en temps réel. Le pilotage fonctionne à tous les niveaux : redirigez l'agent principal, envoyez des suivis à des sous-agents d'arrière-plan individuels, ou laissez le système renvoyer gracieusement les messages non consommés dans votre zone de saisie si le workflow se termine en premier. Aucun travail n'est perdu, aucun redémarrage nécessaire.
- **Chargement dynamique de compétences** via un outil `LoadSkill` qui permet à l'agent de découvrir et d'activer des ensembles d'outils de compétences à la demande, gardant la surface d'outils par défaut légère tout en rendant les capacités spécialisées disponibles quand nécessaire
- **Multimodal** intercepte les lectures de fichiers pour les images et PDF, télécharge le contenu du bac à sable ou des URL, et l'injecte sous forme de base64 dans la conversation pour que les modèles multimodaux puissent l'interpréter nativement
- **Mode planification** avec interruptions humaines dans la boucle vous permet de réviser et d'approuver la stratégie de l'agent avant exécution
- **Auto-compaction** compresse l'historique de la conversation à l'approche des limites de tokens, préservant le contexte clé tout en libérant de l'espace
- **Gestion de contexte** décharge automatiquement les grands résultats d'outils vers le système de fichiers de l'espace de travail, gardant un aperçu court dans le contexte, et compacte les longues conversations à mesure qu'elles grandissent — résumant les tours plus anciens tout en gardant la transcription complète récupérable dans l'espace de travail. Les sessions de recherche peuvent s'exécuter indéfiniment sans atteindre les limites de contexte.
Voir [`src/ptc_agent/agent/middleware/`](https://github.com/ginlix-ai/langalpha/blob/HEAD/src/ptc_agent/agent/middleware/) pour l'ensemble complet.
Remerciements : certains des composants middleware sont adaptés ou inspirés de l'implémentation dans [LangChain DeepAgents](https://github.com/langchain-ai/deepagents).
### Streaming et infrastructure
Le serveur diffuse en continu toute l'activité de l'agent via SSE : blocs de texte, appels d'outils avec arguments et résultats, mises à jour d'état des sous-agents, artefacts d'opérations sur fichiers et interruptions humaines dans la boucle. Chaque décision de l'agent est entièrement traçable dans l'interface.
Les workflows s'exécutent en tant que tâches d'arrière-plan indépendantes, totalement découplées de la connexion HTTP/SSE. Si l'onglet du navigateur se ferme ou si le réseau se coupe, l'agent continue de travailler. Lors de la reconnexion, jusqu'à 150 000 événements mis en mémoire tampon sont rejoués pour que le client reprenne exactement là où il s'était arrêté.
PostgreSQL assure le point de contrôle de LangGraph, l'historique des conversations et les données utilisateur (listes de surveillance, portefeuilles, préférences), de sorte que l'état de l'agent et le contexte utilisateur persistent entre les sessions. Redis met en mémoire tampon les événements SSE afin que les rafraîchissements du navigateur et les pertes réseau ne perdent pas les messages en vol : le client se reconnecte et rejoue automatiquement. Les données utilisateur sont exposées à l'agent sous forme de fichiers JSON virtuels soutenus directement par la base de données — les lectures sérialisent les lignes actives à la demande et les écritures s'appliquent dans une seule transaction validée, sans aller-retour de synchronisation avec le bac à sable — tandis que les compétences sont synchronisées avec le bac à sable à l'initialisation de la session via un cache basé sur un manifeste, et ne sont re-téléchargées que lorsqu'elles changent. Voir la [référence API](https://github.com/ginlix-ai/langalpha/blob/HEAD/docs/api/README.md) complète pour plus de détails.
### Provenance des sources
Chaque source de données externe que l'agent touche est tracée et affichée. Un middleware de provenance enregistre chaque recherche web, récupération de page, dépôt SEC, appel de données de marché, invocation d'outil MCP et lecture de fichier dans l'espace de travail — y compris les accès effectués par les sous-agents d'arrière-plan — et émet un événement de flux `provenance` par source, aucun d'entre eux n'entrant dans le contexte du LLM. L'interface les affiche sous forme de panneau Sources à côté de chaque tour : sources regroupées par type, favicons pour les origines web, et une vue détaillée exposant le fournisseur, l'horodatage, les arguments capturés, une empreinte de contenu et un extrait. Une bascule *Ce tour / Toutes les sources* révèle l'empreinte complète des données sur l'ensemble d'un fil de discussion, et cliquer sur une source de fichier ou de mémo l'ouvre directement dans le panneau de fichiers de l'espace de travail — une piste entièrement vérifiable des données derrière chaque résultat de recherche.
## Sécurité et coffre-fort de l'espace de travail
LangAlpha applique un modèle de sécurité en couches sur les identifiants, l'exécution de code et les secrets fournis par l'utilisateur.
**Chiffrement au repos** — Toutes les données sensibles (clés API BYOK, jetons OAuth, secrets du coffre-fort) sont chiffrées dans PostgreSQL à l'aide de `pgcrypto`. Le texte en clair n'est jamais stocké dans la base de données.
**Détection de fuite d'identifiants** — Chaque sortie d'outil est analysée avant d'atteindre le contexte du LLM. Le middleware résout toutes les valeurs secrètes connues (clés du serveur MCP, jetons du bac à sable, secrets du coffre-fort) et masque toute correspondance sous la forme `[MASQUÉ:NOM_CLÉ]`. Le même masquage s'applique aux surfaces destinées aux humains — les lectures et téléchargements de fichiers sont nettoyés avant d'atteindre le client.
**Exécution de code en bac à sable** — Chaque espace de travail s'exécute dans son propre bac à sable cloud [Daytona](https://www.daytona.io/) avec un système de fichiers et une frontière réseau dédiés. Des gardes de chemin protégés empêchent l'agent d'accéder aux répertoires système internes — bloquant à la fois l'entrée de l'outil (court-circuitant l'appel avant exécution) et la sortie de l'outil (masquant les chemins divulgués).
### Coffre-fort de l'espace de travail
Chaque espace de travail dispose d'un coffre-fort de secrets intégré pour stocker les clés API et les identifiants que l'agent peut utiliser lors de l'exécution de code — utile pour accéder à des sources de données tierces (API de courtage, fournisseurs de données externes, etc.) ou pour créer des workflows basés sur LLM à l'intérieur de l'espace de travail. Stockez un secret une fois dans l'interface, et il est disponible pour chaque session d'agent dans cet espace de travail via une simple API Python :```python
from vault import get, list_names, load_env
api_key = get("MY_API_KEY") # retrieve a single secret
names = list_names() # list available secret names
load_env() # bulk-load all secrets as env vars
Les secrets du coffre héritent de chaque couche de protection ci-dessus — chiffrés au repos, masqués de toute sortie destinée à l'agent ou à l'humain, et bloqués de tout accès direct aux fichiers. Seul le propriétaire de l'espace de travail peut créer, mettre à jour, révéler ou supprimer des secrets.
L'interface web est plus qu'une simple interface de discussion — c'est un véritable atelier de recherche :
ShowWidget, avec un style adapté au thème et des iframes en bac à sableresults/, servis avec une sémantique de navigateur réelle (les scripts s'exécutent, les bibliothèques CDN se chargent, les ressources relatives se résolvent), visualisables en plein écran et exportables en PDF — distincts des widgets intégrés et des tableaux de bord en directsymbole:timeframe et prévisualisés en ligne dans le chat
Le tableau de bord affiche les indices de marché, un briefing personnalisé et votre liste de suivi — toute tuile peut être épinglée à l'agent comme contexte de discussion pour lancer un fil de recherche.
|
Utilisez LangAlpha depuis les outils dans lesquels vous travaillez déjà. La passerelle d'intégration relaie les messages entre les plateformes de messagerie et l'agent central, chaque canal recevant les réponses dans son format natif. Les intégrations canal sont disponibles exclusivement sur notre service hébergé avec une configuration en un clic et une liaison rapide de compte — visitez integrations pour commencer.
Slack et Discord offrent des canaux natifs et des groupes au niveau des fils, qui se mappent naturellement aux espaces de travail et aux fils de LangAlpha — le contexte est géré de manière native. Telegram et WhatsApp ne disposent pas de ces primitives, ils exécutent donc un mode d'orchestration simplifié. Feishu dispose d'une interface utilisateur complète de messagerie et de cartes avec OAuth à venir prochainement. Telegram a une prise en charge partielle avec une couverture complète prochainement. WhatsApp est prévu.
[!TIP] Vous ne voulez pas auto-héberger ? Essayez la version hébergée — elle inclut toute l'infrastructure de données (FMP, données de marché en temps réel, environnements sandbox cloud) prête à l'emploi. Apportez votre propre clé LLM (BYOK) et commencez immédiatement sans configuration.
Vous pouvez démarrer LangAlpha avec rien d'autre que Docker — pas de clés API pour les données, pas de sandbox cloud. Juste Docker pour l'infrastructure et votre propre abonnement LLM pour le modèle IA.```bash git clone https://github.com/ginlix-ai/langalpha.git cd langalpha make config # interactive wizard — creates .env, configures LLM, data sources, sandbox, and search make up # starts PostgreSQL, Redis, backend, and frontend
- **Frontend :** [http://localhost:5173](http://localhost:5173)
- **API Backend :** [http://localhost:8000](http://localhost:8000) (documentation interactive sur `/docs`)
- **Vérifier :** `curl http://localhost:8000/health`
Pour une expérience complète, l'assistant vous demandera des clés optionnelles — ou vous pouvez les ajouter dans `.env` plus tard :
| Clé | Ce qu'elle débloque |
| ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------- |
| `DAYTONA_API_KEY` | Sandbox cloud persistantes avec support d'espaces de travail multi-sessions ([daytona.io](https://www.daytona.io/)) |
| `FMP_API_KEY` | Données fondamentales, macroéconomiques, dépôts SEC, options de haute qualité ([offre gratuite disponible](https://site.financialmodelingprep.com/)) |
| `SERPER_API_KEY` ou `TAVILY_API_KEY` | Recherche web |
| `LANGSMITH_API_KEY` | Traçage LangSmith pour les exécutions LangGraph |
| `OTEL_EXPORTER_OTLP_ENDPOINT` | Traces et métriques OpenTelemetry vers tout backend OTLP (Jaeger, Grafana Tempo, Datadog, Honeycomb, ...) |
| `SANDBOX_PROVIDER` | Remplacement du fournisseur de sandbox (`daytona` ou `docker`) ; détecté automatiquement depuis `DAYTONA_API_KEY` si non défini |
> [!NOTE]
> Sans clés de services externes, vous obtenez une expérience fonctionnelle mais réduite : Yahoo Finance fournit gratuitement l'historique des prix, les données fondamentales, les résultats et les données d'analystes, mais manque de cotations en temps réel, de données intraday, de macroéconomie et d'analytique des options. La sandbox Docker remplace les sandbox cloud Daytona — l'exécution complète du code PTC fonctionne, mais avec une sécurité et un isolement dégradés. Ajoutez les clés progressivement pour débloquer davantage de capacités.
Exécutez `make help` pour voir toutes les commandes disponibles. Pour une installation manuelle sans Docker, consultez [CONTRIBUTING.md](https://github.com/ginlix-ai/langalpha/blob/HEAD/CONTRIBUTING.md#manual-setup).
## Documentation
- **[Référence de l'API](https://github.com/ginlix-ai/langalpha/blob/HEAD/docs/api/README.md)** avec les endpoints pour le streaming de chat, les espaces de travail, l'état des workflows, et plus
- **Documentation interactive de l'API** sur `http://localhost:8000/docs` lorsque le serveur est en cours d'exécution
## Contact
Pour des partenariats, collaborations, ou demandes générales, contactez [[email protected]](mailto:[email protected]).
## Avertissement
LangAlpha est un outil de recherche, pas un conseiller financier. Rien de ce qui est produit par ce logiciel ne constitue un conseil en investissement, une recommandation ou une sollicitation d'achat ou de vente de titres. Toute production est fournie à des fins d'information et d'éducation uniquement. Utilisez-le à votre propre discrétion — faites toujours vos propres vérifications avant de prendre des décisions d'investissement.
## Licence
Apache License 2.0
| Niveau | Fournisseur | Clé requise | Ce qu'il apporte |
|---|
| 1 | ginlix-data (proxy hébergé) | GINLIX_DATA_URL | Flux de prix WebSocket en temps réel, données intraday, données hors horaires, données d'options |
| 2 | FMP (Financial Modeling Prep) | FMP_API_KEY | Fondamentaux de haute qualité, états financiers, données macro, données d'analystes |
| 3 | Yahoo Finance (yfinance) | Aucune — gratuit | Historique des prix, fondamentaux de base, résultats, avoirs, transactions d'initiés, ESG, filtrage |
| Catégorie | Compétences |
|---|
| Valorisation et modélisation | Modèle DCF, Analyse des comparables, Modèle 3 états, Mise à jour du modèle, Audit du modèle |
| Recherche en actions | Initiation de couverture (rapport de 30 à 50 pages), Aperçu des résultats, Analyse des résultats, Suivi de thèse |
| Intelligence de marché | Note matinale, Calendrier des catalyseurs, Aperçu secteur, Analyse concurrentielle, Génération d'idées, Recherche X |
| Génération de documents | PDF, DOCX, PPTX, XLSX, HTML — créer, modifier, extraire |
| Opérations | Contrôle qualité du deck d'investissement, Automatisations programmées, Profil utilisateur et portefeuille |
|
| Commencez par un préréglage élaboré — Morning Brief, Agent Desk, Researcher ou Trader. | Ou composez le vôtre depuis la galerie de widgets — marchés, intelligence, personnel, agent et espace de travail. |
| Fonctionnalité | Slack | Discord | Feishu | Telegram |
|---|
| Texte enrichi / markdown | ✅ | ✅ | ✅ | ✅ | 🔜 |
| Upload de fichier (utilisateur → agent) | ✅ | ✅ | ✅ | ❌ | ➖ |
| Téléchargement de fichier (agent → utilisateur) | ✅ | ✅ | ✅ | ❌ | ➖ |
| Rendu d'images | ✅ | ✅ | ✅ | ❌ | ➖ |
| Interruptions humaines dans la boucle | ✅ | ✅ | ✅ | ⚠️ | ➖ |
| Suivi des sous-agents | ✅ | ✅ | ✅ | ✅ | 🔜 |
| Sélection de l'espace de travail / modèle | ✅ | ✅ | ✅ | ✅ | 🔜 |
| Livraison d'automatisations (sortante) | ✅ | ✅ | ❌ | ➖ | ➖ |
| Liaison de compte simplifiée | ✅ | ✅ | ❌ | ❌ | ➖ |
| Commandes slash | ✅ | ✅ | ✅ | ✅ | ➖ |