Cursor 依托 S3 重新思考 Git……并与 GitHub 竞争

Cursor s’appuie sur S3 pour repenser Git… et concurrencer GitHub

Silicon.fr Quality unknown · 质量未知 by Clément Bohic 2026-09-09 08:33 Original
摘要
Cursor宣布将放弃其基于共识的分布式存储Spokes,转而推出Origin与Continuity:Origin是一套面向付费用户的“代码托管/Forge”测试版,当前集成较少(主要是Vercel、Depot、Buildkite),并在与GitHub的同步(如issues、CI工作流)方面仍未完全到位,且承诺短期与其代理能力联动。与此同时,Continuity用以S3为核心的WAL(预写日志)与乐观gossip复制来解决Git在一致性与水平扩展上的瓶颈,避免依赖路由表与数据库共识,并宣称在S3 Standard下可达约120次push/秒、在Express One Zone下可达约300次push/秒,旨在提升Git读写与代理化开发场景的稳定性与吞吐。该消息发布当天也恰逢GitHub发生多起重大故障(API/网页错误率最高约20%,CI失败率最高约70%等),Cursor将其归因于“代理负载激增”背景下的基础设施与配置问题。

Cursor a tranché : Spokes est abandonné au profit de Continuity, une nouvelle architecture pensée pour lever les limites de scalabilité et de cohérence de son ancien système de stockage distribué fondé sur le consensus. Là où Spokes, né au début des années 2010, a servi de base à de nombreux services d’hébergement Git, Continuity s’appuie sur un principe emprunté à S3 : les journaux d’écriture anticipée (WAL, Write-Ahead Logs), qui stockent séquentiellement plusieurs objets dans un même fichier.

Sur cette base, Cursor a développé sa propre forge, baptisée Origin. Mi-août, l’entreprise a ouvert Origin en bêta aux abonnés de ses offres payantes. Pour l’instant, l’offre reste fonctionnellement proche de la concurrence, mais avec un catalogue d’intégrations très réduit, limité à Vercel, Depot et Buildkite. Cursor a bien travaillé les passerelles avec GitHub, mais tout n’est pas encore synchronisé, notamment les issues et les workflows CI. À court terme, la société promet aussi des connexions avec ses agents.

L’annonce intervient le jour même d’une nouvelle panne majeure de GitHub. Au pic, les taux d’erreur web et API ont approché 20 %, et même 50 % pour l’archivage et le téléchargement de fichiers. La cause : une saturation réseau sur des load balancers aux États-Unis, elle-même liée à une politique d’autoscaling mal configurée, qui a conduit un pod Istio à atteindre ses limites de concurrence. GitHub a d’ailleurs enchaîné plusieurs incidents importants ces dernières semaines, surtout sur le CI : le 9 juillet, un problème de provisionnement d’exécuteurs hébergés a empêché certains workloads d’en obtenir ; dix jours plus tard, l’expiration d’un certificat SSL a coupé la connectivité de certains runners ; début août, un déploiement de routine vers un service interne de traitement d’événements et de création de jobs a fait échouer jusqu’à 70 % des flux CI ; fin août, une saturation des écritures vers une base de données utilisée par les déclencheurs a provoqué une autre perturbation.

Cursor estime toutefois que le problème dépasse GitHub et touche plus largement Git, dans un contexte de montée en charge liée au développement agentique. C’est précisément pour répondre à ces contraintes que l’entreprise n’a pas seulement conçu Origin, mais aussi Continuity.

Le principal reproche adressé à Spokes est sa difficulté à passer à l’échelle. Git supporte mal la cohérence éventuelle : mieux vaut la maintenir en continu, mais cela impose une complexité très élevée. Au lancement, Cursor considérait que trois répliques par dépôt constituaient le meilleur compromis. Ce modèle ne tient plus aujourd’hui, car les dépôts ont grossi. Dès qu’on ajoute des répliques, la latence est tirée vers le haut par le serveur le plus lent du cluster. Le problème existe aussi dans l’autre sens : quand des agents travaillent sur un monorepo, ils opèrent souvent en dehors, créant une multitude de petits dépôts, donc autant de répliques à maintenir pour garantir une cohérence totale. Autre limite de Spokes : comme les dépôts sur disque restent la source de vérité pour le consensus, il faut savoir précisément où se trouve chaque copie, ce qui impose une table de routage externe.

Continuity supprime ces contraintes en éliminant à la fois le consensus et l’état. Le cœur du système est le WAL : chaque push y est enregistré comme un objet distinct. Le packfile Git est écrit sur disque puis téléversé sur S3. Un push ne devient visible qu’après préparation de la transaction de référence sur une copie locale du dépôt et enregistrement d’un pointeur vers l’entrée WAL dans le fichier d’index. Cursor affirme que ce mécanisme garantit des pushs linéarisables. Comme il suffit de synchroniser la transaction de référence avec un seul dépôt local, et non avec un quorum de répliques, le système peut ingérer les pushs à la vitesse du disque.

L’architecture évite aussi de suivre l’emplacement de chaque dépôt sur chaque serveur. La source de vérité reste le WAL, ce qui rend le système sans état, sans table de routage et sans base de données relationnelle. Si un dépôt n’est pas présent sur le disque local lors d’un accès, il est reconstruit à partir du WAL. Il n’y a pas non plus de consensus : n’importe quel serveur peut devenir principal. La synchronisation du WAL repose sur une opération atomique de comparaison-et-échange sur S3, ce qui permet, selon Cursor, à n’importe quelle instance d’un dépôt de recevoir un push en toute sécurité.

Pour la réplication, Continuity utilise un mécanisme optimiste fondé sur des paquets UDP de gossip dans le cluster. Chaque réplique connaît l’ETag de la dernière version de l’index WAL qu’elle a rattrapée ; les lectures sur une réplique passent par des requêtes GET conditionnelles avec l’ETag attendu. Le fait d’utiliser S3 comme source de vérité évite les problèmes si un paquet UDP est perdu ou arrive sur le mauvais serveur. Cursor affirme que le système passe à l’échelle dans les deux sens : chaque dépôt reçoit le bon nombre de répliques, et le débit des opérations Git en lecture seule — clone, fetch, etc. — augmente linéairement.

Le compactage est également optimisé : seul le nœud principal l’exécute, et le résultat s’applique à la fois au dépôt sur disque et au WAL. Comme toutes les répliques suivent le WAL, elles suivent aussi les événements de compactage. Côté performances, Cursor indique que le débit des pushs dépend de la latence de mise à jour du WAL : avec S3 Standard, le système tient 120 pushs par seconde ; avec Express One Zone, il monte à 300 pushs/s. Le facteur limitant reste la vitesse de compactage des données Git sur disque, et l’entreprise dit travailler sur de nouvelles méthodes d’organisation pour en réduire l’impact.

Summary
Cursor annonce deux nouveaux composants pour repenser l’infrastructure Git : Origin (une “forge” en bêta pour ses abonnés, avec peu d’intégrations—Vercel, Depot, Buildkite—et des connexions GitHub encore incomplètes, notamment sur issues et CI) et Continuity, qui remplace Spokes pour mieux gérer scalabilité et cohérence. Continuity s’appuie sur S3 et un WAL (Write-Ahead Log) pour rendre les pushs linéarisables sans consensus ni état central, en utilisant une réplication optimiste (gossip/UDP) et en promettant jusqu’à ~120 pushs/s avec S3 Standard et ~300 pushs/s avec Express One Zone. L’annonce intervient alors que GitHub subit de multiples pannes récentes liées à la surcharge et à des problèmes d’infrastructure (autoscaling, CI runners, DB/événements), ce qui renforce l’intérêt de Cursor pour une alternative plus robuste face à la croissance de la charge “agentique”.

Cursor has abandoned Spokes in favor of Continuity, a new architecture meant to address the scaling and consistency limits of its earlier Git storage system. Spokes, introduced in the early 2010s, is a distributed storage layer based on consensus and has become the foundation of many Git hosting services. Cursor says that model no longer fits today’s workloads, especially as repositories have grown larger and agent-driven development has multiplied the number of operations and small repos to manage.

On top of Continuity, Cursor has built its own forge, called Origin, which opened in beta in mid-August to paying subscribers. Functionally, Origin is not yet differentiated from competitors, but it currently offers far fewer integrations: only Vercel, Depot and Buildkite are supported. Cursor has worked on GitHub interoperability, though synchronization is still incomplete — issues and CI workflows, for example, are not yet fully mirrored. The company says short-term integrations with its agents are coming.

The announcement landed on the same day as GitHub’s latest major outage. At peak, web and API error rates reached nearly 20%, and file archiving and downloads hit 50% errors. GitHub said the incident was caused by network saturation on U.S. load balancers, itself the result of a misconfigured autoscaling policy that led an Istio pod to hit concurrency limits. It was only the latest in a series of disruptions: on July 9, a provisioning service failure prevented some workloads from obtaining hosted runners; ten days later, an SSL certificate expiration cut connectivity for some runners; in early August, a routine deployment to an internal event-processing and job-creation service caused up to 70% of CI flows to fail; and at the end of the month, writes to a database used by triggers became saturated. More broadly, GitHub has been under increasing load in the era of agentic development — though Cursor argues the deeper issue is Git itself, not GitHub.

Cursor’s critique of Spokes is that Git does not handle eventual consistency well, and keeping consistency continuously comes at a high complexity cost. When Spokes launched, three replicas per repository was considered the ideal trade-off, but repositories have since become much larger. Adding replicas creates a long-tail latency problem, since each step is limited by the slowest server in the cluster. The same scaling issue appears in reverse for monorepos broken into many small repos by agents: each one must still be replicated to preserve full consistency. Cursor also notes that because on-disk repositories remain the source of truth for consensus, every copy matters, which forces the system to maintain an external routing table to know where each repository lives.

Continuity removes both consensus and state from the core path. Its central component is a write-ahead log built around S3. Each push is stored as a separate object; the Git packfile is written to disk and uploaded to S3. A push only becomes visible after a reference transaction is prepared on a local copy of the repository and a pointer to the WAL entry is written into the index file. Cursor says this makes all pushes linearizable. Because the system only needs to synchronize the reference transaction with one local repository rather than a quorum of replicas, it can ingest pushes as fast as the disk allows.

The design also eliminates the need to track where every repository lives on every server. The WAL is the source of truth, so the system is stateless and does not require routing tables or a relational database. If a repository is missing from local disk when accessed on a host, it can be materialized from the WAL. There is no consensus layer either: any server can act as primary. WAL synchronization relies on an atomic compare-and-swap operation on S3, which Cursor says makes it safe for any repository instance to accept a push.

For replication, Continuity uses optimistic gossip over UDP packets. Each replica knows the ETag of the latest WAL index version it has caught up to, and reads are performed through conditional GET requests using the expected ETag. Because S3 is the source of truth, lost UDP packets or packets arriving at the wrong server do not break correctness. Cursor says the system scales in both directions, giving each repository the right number of replicas and increasing read-only Git throughput — clone, fetch and similar operations — linearly.

Compaction is also handled differently: only the primary node performs it, and the result applies both to the on-disk repository and the WAL. Since all replicas follow the WAL, they also follow compaction events. Push throughput depends on WAL update latency: Cursor says it can sustain 120 pushes per second with S3 Standard and 300 pushes per second with Express One Zone. The current bottleneck is Git’s own ability to compact data on disk, and Cursor says it is working on data-layout methods to reduce that overhead.

Résumé
Cursor abandonne Spokes au profit de Continuity : une nouvelle forge baptisée Origin (bêta mi-août pour ses abonnés) s’appuie sur une architecture centrée sur des journaux d’écriture anticipée (WAL) et sur S3 pour améliorer la scalabilité et la cohérence des dépôts Git. Continuity vise une réplication sans état, sans consensus, avec des performances annoncées jusqu’à 120 pushs/s (S3 Standard) et 300 pushs/s (Express One Zone), tout en promettant des intégrations progressives (actuellement Vercel, Depot, Buildkite ; synchronisation GitHub encore incomplète). L’annonce intervient le jour de nouvelles pannes GitHub liées à la “surcharge agentique” et à des erreurs API/CI, dans un contexte de charge accrue autour du développement agentique, ce qui renforce l’enjeu de fiabilité côté plateformes Git.

Cursor a fait son choix : exit Spokes, place à Continuity.

Le premier est un système de stockage distribué fondé sur le consensus. Né au début des années 2010, il est devenu le substrat de nombreux services d’hébergement Git.

Le second est une tentative d’en pallier les limites – tant en matière de scalabilité que de maintien de la cohérence. Son architecture est centrée sur un concept propre à S3 : les journaux d’écriture anticipée (WAL, Write-Ahead Logs). Lesquels consistent, dans les grands lignes, à stocker plusieurs objets dans un même fichier de manière séquentielle.

Sur cette base, Cursor a développé une forge qu’il a appelée Origin. Mi-août, il a commencé à y donner accès, en bêta, pour les abonnés à ses forfaits payants.

En façade, il n’y a pour le moment pas de spécificités fonctionnelles par rapport à la concurrence. Il y a surtout beaucoup moins d’intégrations : le catalogue se limite à Vercel, Depot et Buildkite.

Cursor a soigné les passerelles avec GitHub, mais tout n’est pas encore synchronisé (issues et workflows CI, par exemple). Il promet notamment, sur le court terme, des jonctions avec ses agents.

Pannes répétées pour GitHub, victime de « surcharge agentique »

L’annonce d’Origin est tombée le jour même où GitHub a connu sa dernière panne majeure en date. Au pic, les taux d’erreur web et API ont avoisiné 20 % (50 % sur l’archivage et le téléchargement de fichiers). En cause, une saturation réseau sur des load balancers aux États-Unis. Le problème découlait d’une politique d’autoscaling mal configurée, en conséquence de quoi un pod Istio avait atteint ses limites de concurrence.

GitHub a connu d’autres pannes importantes ces dernières semaines. En particulier sur le CI. Le 9 juillet, la dégradation d’un service de provisionnement d’exécuteurs hébergés a empêché certains workloads d’en acquérir. Dix jours plus tard, une expiration de certificat SSL a entraîné une perte de connectivité pour certains runners. Début août, à la suite d’un déploiement de routnie vers un service interne de traitement d’événements et de création de jobs, jusqu’à 70 % des flux CI ont échoué. Une autre perturbation est survenue à la fin du mois, due à une saturation des écritures vers une base de données exploitée par les déclencheurs.

Ces derniers mois, la plate-forme a plus globalement souffert d’un net accroissement de la charge dans le contexte du développement agentique. Le problème n’est toutefois pas tant lié à GitHub qu’à Git. Ainsi Cursor n’a-t-il pas seulement conçu Origin, mais aussi Continuity.

Remédier aux limites de scalabilité de Spokes

Git s’accommode mal de la cohérence éventuelle. Il est préférable de la maintenir en continu. Pour cela, Spokes accepte un coût de complexité très élevé.

À son lancement, trois répliques par dépôt représentaient le compromis idéal, d’après Cursor. Aujourd’hui, les choses ont changé : les repos se sont massifiés.

Dès lors qu’on commence à ajouter des répliques apparaît un problème de la longue traîne, la latence de chaque étape étant déterminée par le serveur le plus lent du cluster. Cette contrainte de scalabilité vaut aussi dans l’autre sens. Lorsque des agents travaillent sur un monorepo, ils opèrent souvent en dehors, créant un grand nombre de petits dépôts. Soit autant de répliques à maintenir pour garantir entièrement la cohérence.

Cursor souligne un autre défaut de Spokes : puisque les dépôts sur disque constituent toujours la source de vérité pour le consensus, chaque copie est importante. Il faut donc savoir exactement où se trouve chaque dépôt. Ce qui ajoute une dépendance envers une table de routage externe.

Pas de consensus ni d’état

Pour garantir une scalabilité horizontale entièrement cohérente, le composant central de Continuity est donc le journal d’écriture anticipée. Chaque push y est stocké sous la forme d’un objet distinct. Le packfile (format de sérialisation binaire de Git) est à la fois envoyé sur disque et téléversé sur S3. Un push ne devient cependant visible qu’après préparation de la transaction de référence sur une copie locale du dépôt et enregistrement d’un pointeur vers l’entrée WAL dans le fichier d’index. L’ensemble garantit que tous les pushs sont linéarisables, explique Cursor.

Comme il suffit de synchroniser la transaction de référence avec un seul dépôt local plutôt qu’avec un quorum de répliques, le système peut ingérer les pushs aussi vite que le permet le disque.

Continuity élimine aussi le besoin de suivre l’emplacement de chaque dépôt sur chaque serveur. La source de vérité reste le journal d’écriture anticipée. Le système est sans état et ne nécessite ni tables de routage, ni base de données relationnel. Si un dépôt est absent du disque local lors d’un accès sur un hôte, on le matérialise à partir du WAL.

Il n’y a pas non plus de consensus : n’importe quel serveur peut être le principal. La synchronisation du WAL se fait par une opération atomique de comparaison et d’échange sur S3. Il est donc toujours sûr que n’importe quelle instance d’un dépôt reçoive un push, prétend Cursor.

Jusqu’à 300 pushs par seconde

Continuity effectue une réplication optimiste en envoyant des paquets UDP de gossip dans le cluster. Chaque réplique connaît l’ETag (entity tag) de la dernière version de l’index WAL qu’elle a rattrapée. Les opérations de lecture sur une réplique consistent en des requêtes GET conditionnelles avec l’ETag attendu. Avoir S3 comme source de vérité évite les problèmes quand le paquet UDP se perd ou arrive sur le mauvais serveur. Le système passant à l’échelle dans les deux directions, chaque dépôt dispose du bon nombre de répliques, selon Cursor. Et le débit des opérations Git en lecture seule (clone, fetch…) augmente linéairement.

Continuity amortit par ailleurs le coût du compactage. Seul le nœud principal l’effectue. Le résultat s’applique à la fois au dépôt sur disque et au WAL. Comme toutes les répliques suivent le WAL, elles suivent aussi les événements de compactage.

Le débit des pushs d’un cluster dépend de la latence de mise à jour du WAL. Avec S3 Standard, Cursor parvient à maintenir 120 pushs par seconde. Avec Express One Zone, il atteint 300 pushs/s. Le facteur limitant est la vitesse à laquelle Git peut compacter les données sur disque. Cursor dit travailler sur des méthodes d’organisation de ces données afin de réduire l’impact du compactage.

Illustration générée par IA

The post Cursor s’appuie sur S3 pour repenser Git… et concurrencer GitHub appeared first on Silicon.fr.

AI Insight
Core Point

Cursor 用基于 S3 的 WAL/日志机制重构 Git 存储与一致性(Origin/Continuity),并推出 Origin 以对标 GitHub,但当前集成少且同步仍不完整;同时恰逢 GitHub 多次大规模故障暴露 CI/平台可靠性与扩展性问题。

Key Players

Cursor — AI 编程助手与自研代码托管/代理相关基础设施,法国/欧洲背景(文中为其发布 Origin/Continuity)。

GitHub — 代码托管与 CI 平台,基于云的开发者协作服务(文中多次发生停摆/降级)。

S3(Amazon) — 对象存储,作为 Continuity 的真相来源与 WAL 同步介质。

Vercel — 部署/前端平台,Origin 集成方之一(文中)。

Depot — CI/构建相关服务,Origin 集成方之一(文中)。

Buildkite — CI/CD 平台,Origin 集成方之一(文中)。

Istio — 服务网格/流量管理组件,文中故障涉及 pod 并发上限。

Industry Impact
  • ICT: High — 新型 Git 一致性/可扩展架构以 S3 为核心,可能改变代码托管与分发的基础实现路径。
  • Computing/AI: Medium — AI 代理驱动的开发工作流对底层 Git/CI 稳定性提出更高要求,推动平台工程演进。
  • Energy: Low — 主要是基础设施与存储/压缩效率优化,间接影响但不直接聚焦。
Tracking

[Strongly track] — Origin 的性能目标(push/s)与对 GitHub 的替代叙事强,且其与 GitHub 故障时点高度相关,短期市场关注度高。

Highlights
Tech Breakthrough
Related Companies
neutral
GitHub
mature
negative
positive
Cursor
startup
positive
positive
Vercel
scale-up
neutral
negative
positive
neutral
neutral
neutral
Categories
人工智能 软件 云计算
AI Processing
2026-09-09 12:29
openai / gpt-5.4-nano