Streaming Binance Square posts in real time (no official API)

There is no official Binance API for reading Binance Square posts in real time. The public Square endpoint only lets you publish content, not monitor it. So tracking Square posts in real time usually means scraping the web app on a timer, or using a managed real-time feed.

This post shows the WebSocket approach with small Node and Python clients. Full repo (MIT): https://github.com/SisoSol/binance-square-realtime

Why not scrape or poll

Polling caps your worst-case latency at the check interval and breaks whenever the page layout changes. A WebSocket pushes the post the instant it is detected, which is what matters for trading, alerting, and breaking news.

The event

Each message is a JSON object, with the coin pairs already extracted:

{
  "platform": "binance",
  "handle": "cz_binance",
  "content": "Funding rates flipping. Stay sharp.",
  "coinPairs": ["BTCUSDT", "ETHUSDT"],
  "timestamp": "2026-06-16T12:00:00Z"
}

Get the code

Working Node and Python WebSocket clients are in the repo: https://github.com/SisoSol/binance-square-realtime

Get an API key and your WebSocket path from the dashboard at 1322.io. Full walkthrough and event schema: https://1322.io/blog/binance-square-api-guide

These examples run against the 1322 managed Binance Square feed, but the consumer pattern is generic. The same stream also carries X, Truth Social, Instagram, YouTube and news.

알트코인 무덤: 수많은 암호화폐 프로젝트가 소멸할 수밖에 없는 이유를 파헤치다

비트코인의 혁신적인 정신에서 태어난 암호화폐 시장은 이제 수천 개의 디지털 자산이 뒤섞인 광대한 생태계로 성장했다. 비트코인과 이더리움이라는 두 거인 너머에는 비트코인을 제외한 모든 암호화폐를 지칭하는 ‘알트코인’이라는 거대한 우주가 펼쳐져 있다. 혁신적인 기술, 더 빠른 거래 속도, 강화된 프라이버시, 새로운 사용 사례, 혹은 초기 비트코인 투자자처럼 엄청난 수익을 올릴 수 있다는 꿈까지, 알트코인의 매력은 부인할 수 없는 사실이다. 이러한 투기적 열풍은 여러 번의 강세장을 부추겼고, 수많은 프로젝트가 분산화된 미래의 한 조각을 차지하기 위해 경쟁하며 탄생하고 번성했다. 하지만 이러한 활기 넘치는 혁신의 표면 아래에는 냉혹한 현실이 도사리고 있다. 이들 알트코인 대다수는 결국 소멸할 운명이라는 점이다. 코인마켓캡(CoinMarketCap)과 코인게코(CoinGecko)를 포함한 다양한 출처의 데이터는 지난 10년간 출시된 수천 개의 프로젝트가 개발을 중단했거나, 모든 유의미한 거래량을 잃었거나, 거래소에서 상장 폐지되었음을 일관되게 보여준다. 이러한 높은 사망률은 단순히 통계적 이상 현상이 아니라, 이제 막 태동하는 고도로 경쟁적이며 대부분 규제되지 않은 시장의 근본적인 특성이다. 블록체인 연구 분야에서 10년간 쌓아온 전문 지식을 바탕으로, 이 글은 이러한 광범위한 현상 뒤에 숨겨진 다각적인 이유를 해부하고, 알트코인 무덤을 만드는 기술적, 경제적, 시장 역학을 탐구하며, 이러한 끊임없는 도태를 이끄는 메커니즘에 대한 전문가의 관점을 제시한다. 알트코인의 탄생은 2010년대 초반으로 거슬러 올라간다. 네임코인(Namecoin, 2011)과 라이트코인(Litecoin, 2011) 같은 프로젝트들은 비트코인 디자인의 특정 측면을 기반으로 구축하거나 개선하려 시도했다. 네임코인은 분산형 DNS를 탐구했고, 라이트코인은 더 빠른 블록 시간과 다른 해싱 알고리즘(Scrypt)을 통해 더 민주적인 채굴을 목표로 했다. 이러한 초기 흐름은 비트코인 코드베이스의 포크 형태로, 인지된 한계를 해결하거나 새로운 기능을 탐색하기 위해 대안적인 암호화폐를 만드는 선례를 세웠다. 알트코인 현상은 2015년 이더리움이 선도한 스마트 계약 플랫폼의 등장과 함께 진정으로 폭발했다. 이더리움의 튜링 완전 블록체인은 개발자들이 탈중앙화 애플리케이션(dApp)을 구축하고 자체 토큰(ERC-20 표준)을 발행할 수 있게 했으며, 이는 2017~2018년의 ICO(Initial Coin Offering) 붐을 촉발했다. 이 시기에는 야심 찬 백서와 상당한 자금 조달을 자랑했지만, 종종 실현 가능한 제품이나 지속 가능한 비즈니스 모델이 부족한 새로운 프로젝트들이 전례 없이 급증했다. 이후의 사이클들은 디파이(DeFi), NFT(Non-Fungible Tokens)부터 Web3 게임 및 메타버스 프로젝트에 이르기까지 새로운 서사를 가져왔고, 각각 수천 개의 새로운 토큰을 탄생시켰다. 알트코인 생성의 주요 동기는 다양하다. 첫째, 더 뛰어난 성능(예: 더 높은 거래 처리량), 강화된 프라이버시(예: 영지식 증명), 혹은 새로운 합의 메커니즘(예: 지분 증명, DAG)을 제공하려는 기술적 혁신이 있다. 둘째, 특정 dApp, 플랫폼, 혹은 생태계를 위한 토큰(예: 거버넌스 토큰, 특정 서비스를 위한 유틸리티 토큰)을 구축하려는 특정 사용 사례가 있다. 셋째, 공유된 비전에서 태어나 더 분산화되거나 공평한 금융 시스템을 만들고자 하는 커뮤니티와 이념이 존재한다. 넷째, 시장의 과열을 이용해 설립자와 초기 투자자들이 빠른 수익을 목표로 하는 투기와 재정적 이득을 위한 프로젝트도 많다. 이러한 빠른 확산은 종종 투기 거품에 의해 부추겨지며, ‘적자생존’의 틀 안에서 작동한다. 소수의 프로젝트만이 지속 가능한 틈새시장을 개척하고 상당한 네트워크 효과를 축적하지만, 대다수는 채택을 얻거나, 개발을 유지하거나, 불가피한 시장 침체를 견뎌내는 데 어려움을 겪는다. 암호화폐의 롱테일(long tail)은 소수의 자산이 시가총액의 대부분을 차지하고, 수천 개의 다른 자산은 무명 속에 시들게 되는 멱법칙 분포(power law distribution)를 보여준다. 대부분의 알트코인이 사라지는 근본적인 이유는 기술적 결함, 결함 있는 경제 모델, 그리고 지속 불가능한 운영 전략의 복합적인 요소에 깊이 뿌리내리고 있다. 1. 진정한 혁신과 유틸리티의 부재: 상당수의 알트코인은 기존의 더 확고한 솔루션에 비해 실질적인 개선이나 새로운 유틸리티를 제공하지 못하기 때문에 실패한다. 많은 프로젝트가 인기 있는 암호화폐를 약간 포크하고 사소한 매개변수를 변경하거나 브랜드를 바꿔 내놓은 ‘미투(me-too)’ 프로젝트에 불과하다. 예를 들어, 비트코인의 성공 이후 수많은 ‘비트코인 클론’이 등장했지만, 약간 다른 해싱 알고리즘이나 블록 시간 외에는 이렇다 할 특징이 없어 중요한 네트워크 효과나 사용자 기반을 확보하는 데 실패했다. 실질적인 문제를 경쟁자보다 더 효과적이고 효율적으로 해결하는 독특한 가치 제안 없이는 이러한 프로젝트는 본질적으로 지속 불가능하다. 종종 존재하지 않는 문제를 해결하거나, 너무 비실용적이거나 복잡하거나, 너무 틈새시장만을 노려 광범위한 채택을 달성하기 어려운 솔루션을 제공하기도 한다. 시장은 이러한 프로젝트들을 빠르게 걸러내고, 단순히 모방적이거나 ‘베이퍼웨어(vaporware)’에 불과한, 즉 혁신적인 기능을 약속했지만 실제로는 거의 또는 전혀 기능하는 제품을 내놓지 못하는 프로젝트들을 버린다. 2. 결함 있는 토크노믹스와 경제 모델: 암호화폐의 공급과 수요를 지배하는 경제 원칙인 토크노믹스는 장기적인 생존 가능성에 매우 중요하다. 많은 알트코인이 여기서 치명적인 결함을 보인다. * 지속 불가능한 인플레이션 모델: 상응하는 수요나 견고한 소각 메커니즘 없이 높은 토큰 발행률을 가진 프로젝트는 필연적으로 토큰의 가치를 희석시킨다. 공급이 네트워크의 유틸리티나 채택을 끊임없이 앞지르면 토큰의 구매력은 침식되고, 이는 결국 죽음의 나선(death spiral)으로 이어진다. * 부실한 토큰 분배: 소수의 창립자, 초기 투자자 또는 고래들이 불균형적으로 많은 토큰을 보유하는 고도로 집중된 분배는 상당한 위험을 초래한다. 이러한 중앙 집중화는 대규모 보유자들이 개인적인 이득을 위해 가격을 조작하여 신뢰와 유동성을 파괴하는 ‘펌프 앤 덤프(pump-and-dump)’ 계획으로 이어질 수 있다. 악명 높은 폰지 사기였던 비트커넥트(BitConnect) 같은 프로젝트는 집중된 토큰 공급과 지속 불가능한 대출 모델이 어떻게 치명적인 붕괴로 이어지는지를 잘 보여주었다. * 내재적 토큰 유틸리티의 부족: 프로젝트의 기본 토큰이 네트워크 운영, 거버넌스, 스테이킹 또는 핵심 서비스 접근에 필수적이지 않다면, 그 가치 제안은 심각하게 약화된다. 다른 암호화폐(예: 스테이블코인)나 법정화폐로 서비스를 지불할 수 있고 기본 토큰이 필요 없는 프로젝트는 내재적 수요를 창출하기 어렵다. 토큰은 본질적으로 근본적인 사용 사례가 없는 투기적 자산이 되며, 시장 정서에 매우 취약해진다. * 부적절한 재무 관리: 특히 ICO 시대의 많은 프로젝트는 이더리움(ETH)이나 비트코인(BTC)으로 상당한 자본을 모금했다. 무모한 지출, 분산 투자 부족, 또는 자금을 안정적인 자산으로 전환하지 못하는 등 이러한 재무의 부실한 관리는 약세장에서 운영 자금을 빠르게 고갈시켰고, 개발자들의 프로젝트 포기로 이어졌다. 3. 보안 취약점과 기술 부채: 블록체인 기술의 복잡성은 수많은 보안 문제를 야기한다. 특히 새로운 스마트 계약 디자인이나 합의 메커니즘을 가진 많은 알트코인은 취약점에 취약하다. * 스마트 계약 버그: 스마트 계약 코드의 오류는 익스플로잇, 자산 손실, 그리고 치명적인 실패로 이어질 수 있다. 2016년 이더리움에서 발생한 악명 높은 DAO 해킹 사건은 취약점으로 인해 수백만 달러 상당의 이더리움이 도난당하고 결국 하드포크로 이어진 대표적인 예시다. 이는 알트코인 자체는 아니었지만, 초기 스마트 계약 기술의 위험성을 부각시켰다. 이후 수많은 디파이 프로젝트들이 유사한 익스플로잇의 희생양이 되어 유동성 풀을 고갈시키고 투자자 신뢰를 파괴했다. * 중앙 집중화 위험: 소규모 알트코인, 특히 해시율이 낮은 작업 증명(PoW)을 사용하는 프로젝트는 51% 공격에 취약하다. 이는 단일 주체가 네트워크 컴퓨팅 파워의 절반 이상을 장악하여 거래를 조작할 수 있는 공격이다. 중앙 집중화된 개발 팀이나 거버넌스를 가진 프로젝트도 핵심 팀이 해체될 경우 단일 실패 지점, 검열 또는 프로젝트 포기로 고통받을 수 있다. * 기술 부채 및 유지 보수 부족: 빠른 개발은 종종 기술 부채, 즉 시간이 지남에 따라 축적되는 최적화되지 않은 코드나 디자인 선택으로 이어진다. 지속적인 개발, 버그 수정, 보안 감사, 그리고 프로토콜 업그레이드 없이는 프로젝트는 취약해지고, 불안정해지며, 결국 구식이 된다. 개발자 번아웃과 자금 고갈은 종종 유지 보수되지 않는 코드베이스로 이어진다. 4. 확장성과 상호 운용성 과제: 많은 알트코인이 뛰어난 확장성을 약속하지만, 탈중앙화나 보안을 손상시키지 않고 이 약속을 이행하는 것은 여전히 중요한 과제다. 효과적으로 확장하지 못하는 프로젝트는 혼잡해지고 비용이 많이 들어 사용자를 멀어지게 한다. 더욱이, 점점 더 상호 연결되는 블록체인 세계에서 다른 주요 체인이나 생태계와 상호 운용할 수 없는 프로젝트는 고립되어 무의미해질 위험이 있다. 경쟁 환경은 끊임없이 진화하며, 새로운 레이어2(Layer 2) 솔루션과 크로스체인 브릿지가 등장하여 기술적으로 열등하거나 고립된 프로젝트를 빠르게 구식으로 만든다. 특정 알트코인 실패 사례를 살펴보면 위에서 논의된 메커니즘을 구체적으로 이해할 수 있다. 1. 테라(LUNA & UST): 결함 있는 토크노믹스와 시스템적 위험의 사례 2022년 5월 테라 생태계의 붕괴는 잘못 설계된 알고리즘 스테이블코인의 위험성과 상호 연결된 토크노믹스의 취약성에 대한 가혹한 경고로 남아있다. 테라는 자매 토큰인 루나(LUNA)를 통해 안정성을 유지하는, 미국 달러에 알고리즘적으로 고정된 탈중앙화 스테이블코인 UST를 만들고자 했다. 사용자들은 1달러 상당의 루나를 소각하여 1 UST를 발행할 수 있었고, 그 반대도 가능했다. 이 메커니즘은 가격 변동을 흡수하도록 설계되었다. 그러나 이 시스템은 특히 앵커 프로토콜(Anchor Protocol)을 통해 UST 수요에 크게 의존했는데, 앵커 프로토콜은 지속 불가능하게 높은 수익률(약 20%)을 제공했다. 치명적인 결함은 UST가 디페깅되기 시작하면서 나타났다. 대규모 UST 매도세는 시스템이 페그를 유지하는 능력을 압도했다. UST가 달러 가치를 잃자, 사용자들은 UST를 루나로 상환하기 위해 몰려들었고, 이는 루나 공급의 초인플레이션 나선으로 이어졌다. 루나의 가치는 80달러 이상에서 몇 센트 수준으로 폭락하며 담보와 전체 생태계를 효과적으로 파괴했다. 이 치명적인 실패는 충분한 외부 담보가 없는 순수 알고리즘 스테이블코인의 내재적 취약성과 시장 신뢰가 상실될 때 발생할 수 있는 죽음의 나선 가능성을 보여주었다. 이는 상당한 자본과 채택을 가진 프로젝트조차도 극심한 스트레스 하에서 근본적인 설계 결함 때문에 어떻게 무너질 수 있는지를 명확히 드러냈다. 2. 비트커넥트(BCC): 고전적인 폰지 사기 2016년 출시된 비트커넥트(BitConnect)는 합법적인 암호화폐 프로젝트를 가장한 노골적인 사기의 극명한 예시였다. 이 프로젝트는 자체 토큰 BCC를 사용하여 “트레이딩 봇”과 “변동성 소프트웨어”를 통해 투자자들에게 믿을 수 없을 정도로 높은, 보장된 수익(종종 매일 1% 이자)을 약속하는 대출 플랫폼을 운영했다. 투자자들은 이러한 수익을 얻기 위해 BCC를 장기간 예치하도록 권장되었고, 이는 토큰에 대한 인위적인 수요와 희소성을 창출했다. 그러나 현실은 비트커넥트가 고전적인 폰지 사기였다는 것이다. 새로운 투자자들의 자금은 이전 투자자들에게 지급되었고, 실제 거래나 수익 창출은 없었다. BCC 토큰은 이러한 사기 계획을 촉진하는 것 외에는 내재적인 유틸리티가 전혀 없었다. 이 프로젝트는 2017년 강세장 동안 상당한 인기를 얻었지만, 투명성 부족, 지속 불가능한 수익, 그리고 고도로 중앙 집중화된 구조를 포함한 위험 신호들이 암호화폐 커뮤니티의 저명한 인사들에 의해 널리 제기되었다. 2018년 1월, 텍사스 주 증권위원회와 노스캐롤라이나 주 국무장관 증권국의 중단 명령을 포함한 규제 압력으로 인해 비트커넥트는 대출 및 거래소 운영을 중단할 수밖에 없었고, 이는 BCC 토큰 가치의 즉각적이고 거의 완전한 붕괴로 이어졌다. 이 사건은 알트코인 시장에서 사기가 만연하다는 점과 피해자들에게 미치는 치명적인 결과를 강조한다. 3. EOS: “이더리움 킬러”의 미완성 약속 EOS는 2018년 엄청난 과대광고와 함께 출시되었고, 전례 없는 1년간의 ICO를 통해 무려 41억 달러를 모금하며 “이더리움 킬러”가 될 것을 약속했다. 위임 지분 증명(DPoS) 합의 메커니즘을 통해 뛰어난 확장성, 제로 거래 수수료, 그리고 더 사용자 친화적인 경험을 제공하겠다고 내세웠다. 당시 이더리움이 처리할 수 없었던 대규모 dApp들을 호스팅하는 것을 목표로 했다. 막대한 자금과 야심 찬 목표에도 불구하고, EOS는 약속을 이행하는 데 대부분 실패했다. 이 프로젝트는 여러 문제에 시달렸다. * 중앙 집중화 우려: DPoS 모델은 효율적이지만, 단 21개의 블록 프로듀서(BP)만이 거래를 검증하면서 중앙 집중화에 대한 우려를 낳았다. BP 카르텔과 표 매수 의혹이 제기되어 탈중앙화 정신을 훼손했다. * 거버넌스 문제: 네트워크의 거버넌스 시스템은 번거롭고 논란의 여지가 많았으며, 자금 조달 및 프로토콜 변경에 대해 BP와 커뮤니티 구성원들 간의 분쟁이 발생했다. * 채택 부족: 기술적 역량에도 불구하고, EOS는 이더리움에 비해 상당한 개발자 활동이나 dApp 사용자 채택을 유치하고 유지하는 데 어려움을 겪었다. EOS에서 출시된 많은 dApp은 큰 인기를 얻지 못했다. * 혁신 정체의 인식: 초기 출시 이후, 프로젝트는 혁신적인 우위를 유지하는 데 어려움을 겪었다. 많은 이들이 개발 속도가 느려지고 프로젝트가 새로운 레이어1 솔루션이나 이더리움 자체의 확장 노력과 경쟁할 만큼 빠르게 진화하지 못했다고 느꼈다. EOS는 여전히 존재하며 활발한 커뮤니티를 가지고 있지만, 이더리움을 능가하겠다는 초기 약속에서는 크게 벗어났고, 시장 지배력도 크게 약화되었다. 이는 강력한 기술적 기반을 가진 프로젝트조차도 거버넌스 문제, 커뮤니티의 실망, 그리고 혁신과 채택을 지속하지 못하는 능력 때문에 실패할 수 있음을 보여준다. 위 분석이 알트코인 실패의 주된 이유를 설명하지만, 이러한 평가에는 특정 한계와 미묘한 차이가 있음을 인정하는 것이 중요하다. 1. 생존자 편향과 ‘조용한 죽음’: 알트코인 사망률에 대한 우리의 인식은 종종 생존자 편향에 의해 왜곡된다. 우리는 테라나 비트커넥트처럼 화려한 실패나 비트코인, 이더리움, 솔라나, 아발란체와 같은 지속적인 성공에 집중하는 경향이 있다. 그러나 수천 개의 알트코인은 개발, 커뮤니티, 또는 거래량 부족으로 인해 조용히 사라져 무명 속에 묻힌다. 이러한 ‘조용한 죽음’은 포괄적으로 추적하기 어려워 실패율에 대한 정확한 통계를 파악하는 것을 어렵게 만든다. 많은 프로젝트가 기술적으로는 블록체인에 여전히 존재할 수 있지만, 활발한 개발, 커뮤니티, 또는 유동성이 없다면 사실상 죽은 것이나 다름없다. 2. 시장 변동성과 약세장: 암호화폐 시장의 고도로 주기적인 특성은 중요한 역할을 한다. 근본적으로 건전한 프로젝트조차도 장기간의 약세장 동안 엄청난 어려움을 겪을 수 있다. 유동성 감소, 투자자 비관론, 그리고 ‘더 안전한’ 자산(비트코인 또는 이더리움)으로의 일반적인 회피는 프로젝트의 자금, 인재, 그리고 커뮤니티 참여를 고갈시킬 수 있다. 팀은 본질적인 결함 때문이 아니라 경제 침체를 견뎌내지 못해 인력을 감축하거나 개발을 포기할 수밖에 없을지도 모른다. 반대로, 강세장은 일시적으로 약한 프로젝트의 가치까지 부풀려 불가피한 종말을 지연시키기도 한다. 3. 예측 불가능한 혁신과 패러다임 전환: 블록체인 공간은 끊임없는 혁신으로 특징지어진다. 새로운 기술적 돌파구나 새로운 패러다임(예: 레이어2 확장 솔루션, ZK-롤업, 또는 새로운 합의 메커니즘의 부상)은 기존 솔루션이 기능적이고 좋은 의도를 가졌더라도 빠르게 구식으로 만들 수 있다. 5년 전에는 최첨단이었던 프로젝트가 이제는 신규 진입자보다 기술적으로 열등해져 지속적인, 상당한 진화 없이는 관련성을 유지하기 어려워진다. 이러한 끊임없는 혁신 경쟁은 좋은 프로젝트조차도 경쟁에서 밀려날 수 있음을 의미한다. 4. 규제 불확실성과 지정학적 요인: 진화하고 종종 파편화된 글로벌 규제 환경은 중요한 과제를 제기한다. 규제 회색 지대에서 운영되거나 새로운 규제(예: 미등록 증권으로 분류)에 저촉되는 프로젝트는 심각한 법적 장애물, 벌금 또는 전면적인 금지에 직면하여 소멸로 이어질 수 있다. 지정학적 사건이나 암호화폐에 대한 국가 정책의 변화 또한 프로젝트의 생존 가능성에 영향을 미칠 수 있는데, 특히 글로벌 사용자 기반이나 중앙 집중화된 운영 구성 요소를 가진 프로젝트의 경우 더욱 그렇다. 5. ‘사라짐’의 주관성: 알트코인이 ‘사라졌다’고 정의하는 시점은 주관적일 수 있다. 거래량이 0으로 떨어졌을 때일까? 깃허브(GitHub) 저장소에 마지막 커밋이 1년 이상 전일 때일까? 커뮤니티 포럼이 비활성화되었을 때일까? 프로젝트는 몇 년 동안 휴면 상태에 있다가 새로운 개발이나 커뮤니티 관심으로 갑자기 부활할 수도 있지만, 이는 드문 일이다. 이러한 모호성은 명확한 분류를 어렵게 만든다. 알트코인 사이의 높은 사망률은 단순히 불행한 부작용이 아니라, 빠르게 진화하고 허가 없이 운영되는 암호화폐 생태계의 본질적이고 어쩌면 필요한 특성이다. 이는 약하고, 혁신적이지 못하며, 사기성이 있는 프로젝트들을 걸러내고 궁극적으로는 더 회복력 있고, 가치 있으며, 진정으로 변혁적인 프로젝트들이 등장할 길을 닦는 창조적 파괴, 즉 다윈주의적 과정의 강력한 발현이다. 이 광범위한 알트코인 무덤의 주요 동인은 다각적이다. 피상적인 약속을 넘어선 진정한 유틸리티나 혁신의 만연한 부족, 지속 가능한 가치를 창출하지 못하는 근본적으로 결함 있는 토크노믹스, 신뢰를 약화시키는 치명적인 보안 취약점, 그리고 역동적인 기술 환경에 적응하고 일관된 개발을 유지하지 못하는 능력 등이 그것이다. 테라의 치명적인 붕괴, 비트커넥트의 노골적인 사기, 그리고 EOS의 미완성 약속에서 드러났듯이, 이러한 요인들은 초기 자금, 과대광고, 또는 인지된 잠재력과 관계없이 프로젝트를 해체시킬 수 있다. 투기적 이득에 대한 매력이 계속해서 참여자들을 알트코인 시장으로 끌어들이지만, 분별력 있는 시각이 필수적이다. 장기적인 생존은 견고한 기본에 달려있다. 즉, 실제 문제를 해결하는 명확하고 방어 가능한 가치 제안, 잘 설계되고 지속 가능한 토크노믹스, 헌신적이고 유능한 개발 팀, 활기차고 참여적인 커뮤니티, 그리고 보안 및 거버넌스에 대한 선제적인 접근 방식이 그것이다. 결론적으로, 알트코인 무덤은 가치를 지속적으로, 비록 가혹하게나마 검증하는 역할을 한다. 이는 진정한 혁신, 유틸리티, 그리고 회복력이 분산화된 세상에서 성공의 궁극적인 척도임을 강조한다. 수천 개가 필연적으로 실패하겠지만, 끊임없는 개선 추구와 이러한 실패로부터 얻은 교훈은 블록체인 산업의 전반적인 성숙과 강화에 기여하며, 가장 견고하고 영향력 있는 프로젝트만이 미래를 형성하며 지속될 수 있도록 보장한다. 면책 조항: 본 글은 정보 및 교육 목적으로만 작성되었으며, 재정, 투자 또는 거래 조언을 구성하지 않는다. 암호화폐 시장은 변동성이 매우 크며, 알트코인에 투자하는 것은 원금 손실 가능성을 포함한 상당한 위험을 수반한다. 투자 결정을 내리기 전에 항상 자체적으로 철저한 조사를 수행하고 자격을 갖춘 금융 전문가와 상담해야 한다.

※ 본 칼럼은 정보 제공을 목적으로 하며, 투자 권유가 아닙니다. 모든 투자 결정은 본인의 판단과 책임 하에 이루어져야 합니다.

How Transformer Architecture Works — Encoder, Decoder, Tokens, and Context

Transformers changed NLP because they stopped treating text as a simple left-to-right chain.

Instead of reading one token at a time, they compare tokens directly.

That shift made modern language models faster, more scalable, and better at understanding context.

Core Idea

A Transformer is a sequence-to-sequence architecture.

It maps an input sequence to an output sequence.

For example:

English sentence → Korean sentence

Question → Answer

Document → Summary

But the key idea is not “replace one word with another word.”

The key idea is:

Transformers build contextual token representations first.

Then they generate or transform output from those representations.

That is why the architecture matters.

It gives the model a structured way to understand relationships inside text.

The Key Structure

A simplified Transformer flow looks like this:

Input Text

→ Tokens

→ Word Embeddings

→ Encoder

→ Contextual Representations

→ Decoder

→ Output Tokens

More compactly:

Transformer = tokenization + embeddings + attention + encoder-decoder structure

The model first converts raw text into tokens.

Then each token becomes a vector.

Then attention updates each vector based on relationships with other tokens.

The Encoder understands the input.

The Decoder generates the output.

Implementation View

At a high level, the architecture works like this:

split input text into tokens

convert tokens into embedding vectors

pass embeddings through encoder layers

for each encoder layer:
    compute self-attention

    mix information across tokens

    apply feed-forward transformation

    produce contextual token representations

pass previous output tokens into decoder

for each decoder layer:
    apply masked self-attention

    attend to encoder output with cross-attention

    apply feed-forward transformation

    predict the next output token

This structure is practical because attention can be computed with matrix operations.

That makes Transformers much more GPU-friendly than step-by-step recurrent models.

This is one of the biggest reasons Transformers scaled so well.

Concrete Example

Take this sentence:

I love you.

An RNN reads it step by step:

I → love → you

A Transformer can compare all tokens directly.

When processing “love”, it can look at both “I” and “you” at the same time.

So “love” is not treated as an isolated word.

It becomes a contextual representation.

The model learns:

Who loves?

Who is loved?

Which tokens are related?

This matters because language is not just a sequence of words.

Language is a structure of relationships.

Sequence-to-Sequence View

A Transformer can be understood as a sequence-to-sequence model.

It receives one sequence.

It produces another sequence.

Examples:

  • translation
  • summarization
  • question answering
  • text generation
  • code generation

The input and output lengths do not need to match.

That is important.

A short sentence can become a long explanation.

A long document can become a short summary.

The model is not copying token positions.

It is transforming meaning.

RNN vs Transformer

This comparison explains why Transformers became dominant.

RNN:

  • processes tokens one by one
  • keeps information in a hidden state
  • naturally handles order
  • is hard to parallelize
  • can struggle with long-range dependencies

Transformer:

  • processes tokens in parallel
  • compares tokens directly
  • uses attention instead of recurrence
  • scales better on GPUs
  • models long-distance relationships more directly

The difference is simple:

RNN = memory through sequence steps

Transformer = relationships through attention

This is why Transformers are not just “faster RNNs.”

They represent sequence information in a different way.

Encoder-Decoder Architecture

The original Transformer uses an Encoder-Decoder structure.

The Encoder reads the input sequence.

The Decoder generates the output sequence.

Encoder:

  • receives input tokens
  • applies self-attention
  • builds contextual representations
  • outputs one vector per token

Decoder:

  • receives previously generated tokens
  • uses masked self-attention
  • attends to encoder output
  • predicts the next token

The Encoder answers:

What does the input mean?

The Decoder answers:

What should be generated next?

Transformer Encoder

The Transformer Encoder is a stack of repeated encoder layers.

Each layer has two main parts:

  • Self-Attention
  • Feed-Forward Network

Self-Attention lets each token look at other tokens in the same input.

The Feed-Forward Network transforms each token representation independently.

A simplified encoder layer looks like this:

Input

→ Self-Attention

→ Feed-Forward Network

→ Contextual Output

The important part is that every token representation becomes context-aware.

A word is no longer just a word vector.

It becomes a word vector shaped by the sentence around it.

Word Embedding, Tokens, and Vocabulary

A Transformer does not understand raw text directly.

It first splits text into tokens.

A token can be:

  • a word
  • a subword
  • a character-like unit
  • a special symbol

The full set of possible tokens is called the vocabulary.

Each token is mapped to a vector through an embedding layer.

The flow looks like this:

Raw text

→ Tokens

→ Token IDs

→ Embedding vectors

For example:

“I love you”

→ [“I”, “love”, “you”]

→ [token_id_1, token_id_2, token_id_3]

→ [vector_1, vector_2, vector_3]

This matters in practice.

When building with LLMs, tokenization affects cost, context length, latency, and output behavior.

So tokens are not just preprocessing details.

They are part of the model interface.

Transformer Decoder

The Transformer Decoder generates output tokens.

It has three main components:

  • Masked Self-Attention
  • Cross-Attention
  • Feed-Forward Network

Masked Self-Attention prevents the model from seeing future tokens.

This is required for autoregressive generation.

When predicting the next token, the model can only use previous tokens.

The flow looks like this:

Previous output tokens

→ Masked Self-Attention

→ Cross-Attention with Encoder Output

→ Feed-Forward Network

→ Next Token Prediction

This is how the model generates text step by step.

It predicts one token.

Then it appends that token.

Then it predicts the next token.

Cross-Attention

Cross-Attention connects the Decoder to the Encoder.

The Decoder asks:

Which part of the input should I focus on right now?

This is especially useful in translation.

The output word order may be different from the input word order.

A phrase in one language may correspond to several words in another language.

Cross-Attention helps the Decoder align output generation with the encoded input.

Without Cross-Attention, the Decoder would generate mainly from its own previous tokens.

With Cross-Attention, it can reference the input meaning directly.

Context Length

Context length means:

How many tokens the model can process at once.

A longer context allows the model to use more information.

This is useful for:

  • long documents
  • long conversations
  • code files
  • retrieval-augmented generation
  • summarization

But longer context is not free.

Attention compares tokens with other tokens.

So computational cost grows quickly as the sequence gets longer.

This is why context length is both powerful and expensive.

In real systems, context length affects memory usage, latency, and price.

Naive vs Practical View

Naive view:

A Transformer is a model that takes text and returns text.

Practical developer view:

A Transformer is a token-processing system with attention, context limits, and generation constraints.

Naive mindset:

input text
get output text

Practical mindset:

tokenize input

manage context length

understand attention cost

choose decoding strategy

optimize inference

control output quality

This matters because production AI systems are not only about model accuracy.

They are also about speed, memory, cost, and reliability.

Important Conditions and Limits

Transformers are powerful, but they have important constraints.

They need tokenization before processing text.

They need positional information because attention alone does not know order.

They can become expensive with long context.

Decoder generation is sequential during inference.

Context length limits how much information the model can use at once.

These limits explain why modern LLM engineering focuses so much on:

  • efficient attention
  • KV Cache
  • long-context optimization
  • better tokenization
  • inference speed
  • memory reduction

The architecture is elegant.

But scaling it requires engineering.

Transformer vs Traditional Seq2Seq

Traditional Seq2Seq:

  • often uses RNN-based Encoder and Decoder
  • compresses input into hidden states
  • processes sequence step by step
  • may lose information in long sequences

Transformer Seq2Seq:

  • uses attention-based Encoder and Decoder
  • keeps contextual representations for all tokens
  • supports parallel computation
  • models token relationships directly

The key difference:

Traditional Seq2Seq compresses through recurrence.

Transformer Seq2Seq connects through attention.

That is why Transformers became the foundation for modern NLP systems.

Takeaway

A Transformer works by turning tokens into contextual representations.

The Encoder understands the input.

The Decoder generates the output.

Self-Attention models relationships inside a sequence.

Cross-Attention connects generated output to encoded input.

Context length controls how much information the model can use.

If you remember one structure, remember this:

Text → Tokens → Embeddings → Attention → Contextual Representations → Output

That is the backbone of Transformer architecture.

Discussion

When learning Transformers, which part helped you understand the architecture fastest?

The Encoder-Decoder structure, Self-Attention, tokenization, or the generation loop?

Originally published at zeromathai.com.
Original article: https://zeromathai.com/en/transformer-architecture-core-components-en/

GitHub Resources
AI diagrams, study notes, and visual guides:
https://github.com/zeromathai/zeromathai-ai

Fable 5 Banned: What Happens When Your AI Governance Lives Inside the Model

Anthropic launched Fable 5 on June 9, 2026. At 5:21 PM Eastern on June 12 — seventy-two hours later — the US government ordered the model offline for every user on the planet.

If your production agents had moved to Fable 5 in those three days, they were now broken. Not throttled. Not degraded. Offline, with no migration window and no advance notice.

The US government cited a jailbreak as the triggering concern. Anthropic’s own public statement describes the jailbreak as “essentially consisting of asking the model to read a specific codebase and fix any software flaws” — a capability Anthropic argues is already available from GPT-5.5 and other frontier models. Anthropic is complying while disputing the rationale. Whatever the policy outcome, the technical consequence is already visible: governance baked into the model is governance that lives and dies with the model.

What Happened With Fable 5

On June 12, 2026, the US government issued an export control directive ordering Anthropic to suspend all access to Fable 5 and Mythos 5 for any foreign national, whether inside or outside the United States — including Anthropic’s own foreign-born employees. Because Anthropic couldn’t reliably identify and segregate foreign national users in real time, the only compliant path was a complete shutdown across every customer globally. Access to all other Anthropic models was unaffected.

Fable 5 launched three days earlier as Anthropic’s most capable publicly available model. Anthropic had invested thousands of hours of red-teaming its safety classifiers before release. The classifiers were designed to reduce misuse across cybersecurity, biology and chemistry, and distillation. Anthropic noted in its suspension statement that “our safeguards are so strong that many users have complained that they are overly broad.”

None of that stopped the shutdown. The government’s directive didn’t require a high technical standard of proof. A non-universal jailbreak — one that could extract a narrow class of information under specific conditions — was enough to trigger a production outage for hundreds of millions of people.

Why Does Model-Layer Governance Keep Failing?

Model-layer AI governance is an approach where the AI model itself enforces behavioral rules through built-in classifiers, safety layers, and trained refusals. The model’s safety features are part of the model. When the safety features are compromised, the model is compromised.

This is an architectural pattern, not an Anthropic-specific design flaw. Any governance approach that relies on the model to enforce the policy inherits the model’s failure modes as governance failures.

Jailbreaks are the most visible version of this. A classifier that’s part of the inference chain can be manipulated through the inference chain — because trusted commands and untrusted content both arrive as the same stream of tokens. Anthropic stated this directly in their public response: “We suspect that perfect jailbreak resistance is not currently possible for any model provider.” That’s an acknowledgment of a structural limitation, not a bug that a future version will fix.

But jailbreaks are just one failure vector for model-layer governance. Others include:

Regulatory action. June 12 is the first public case of a government ordering a commercial AI model offline on short notice. Export controls on dual-use AI capabilities are an active and expanding policy area. Organizations that built governance dependencies on a specific model now have an external single point of failure — one controlled by the model provider and, ultimately, by government authorities.

Silent model updates. When your model provider ships a new version, classifier behavior may change without notice. A safety update that’s tighter or looser than the previous one doesn’t appear in your security logs.

Provider incidents and policy changes. Terms of service changes, outages at the provider layer, or capability restrictions for specific use cases can all produce the same outcome: a behavioral control you were counting on is no longer available or no longer behaving as expected.

In each case, the failure is the same: a governance dependency you didn’t know you had until it stopped working.

What Should Your Team Check Right Now?

Before the next model disruption hits, run three checks:

1. Map your governance dependencies. List every behavioral control your production agents rely on. For each one: is this enforced by the model (through system prompts, trained refusals, or provider-level classifiers) or does it run independently of which model is serving the request? Anything in the first column is a governance dependency that moves when your model moves.

2. Test model substitution. Can you point your agents at a different model without breaking your behavioral controls? If the answer is no — or if you genuinely don’t know — you have model-layer governance. A model-agnostic governance layer should survive a model substitution without code changes.

3. Audit system prompts for governance. Instructions like “never mention competitor products” or “always require user confirmation before deleting data” embedded in system prompts are model-layer governance. Models follow these instructions most of the time. Under adversarial conditions — prompt injection, context manipulation, jailbreaks — they follow them less reliably. A system prompt instruction is a request the model is trying to fulfill. It’s not a policy enforced by infrastructure.

None of these checks require immediate remediation. They tell you where you’re exposed and how exposed you are.

How Waxell Handles This

The organizations least disrupted by the Fable 5 shutdown were those running governance above the model layer — where the controls aren’t embedded in any model and don’t move when models do.

Waxell Runtime enforces 50+ policy categories as pre-execution controls, before any request reaches the model. Content policies, scope enforcement, cost limits, kill-switch rules — all of it runs as infrastructure, not as instructions the model is trying to follow. When Fable 5 went offline, teams using Waxell Runtime could reconfigure their agents to route to Claude Haiku, GPT-5.5, or any other supported model without changing a single governance rule. Two lines of initialization, 200+ supported libraries, no rebuilds required.

The same architecture handles the other failure modes. If your model provider pushes a version update that changes classifier behavior, your Waxell Runtime policies don’t change. If you need to route requests to a lower-cost model for budget reasons, your behavioral controls transfer automatically. The model is a component your governance plane routes through — not the thing your governance is built on.

Waxell Observe gives production teams real-time visibility into which model each agent call is hitting, what policies were checked, and what the agent did. When models change under you — planned or not — you have a complete trace of what ran against which model and when.

For teams working with external agents, third-party tools, or MCP-connected systems that you didn’t build, Waxell Connect applies the same governance controls to those agents without requiring any code changes or SDK adoption from the external party.

The Fable 5 incident is, at its core, a concentration risk question: how many of your production governance controls depend on a single model staying available and uncompromised? If the answer is “most of them,” that’s an exposure worth addressing before the next disruption — not after.

Get access at waxell.ai/get-access.

Frequently Asked Questions

What is model-layer AI governance?
Model-layer AI governance refers to behavioral controls implemented through the AI model itself — trained safety classifiers, system prompt instructions, or provider-level restrictions. The model enforces the rules. When the model is compromised, unavailable, or changed, those controls degrade or disappear entirely.

What’s the difference between model-layer governance and a governance layer above the model?
A governance layer above the model runs as infrastructure — it enforces policies through pre-execution checks, output filters, and scope controls that are independent of which model is serving the request. Policies survive model substitutions without code changes. Model-layer governance cannot offer this: it’s bundled with the model.

Were Anthropic’s other models affected by the export control order?
No. According to Anthropic’s statement, access to all other Anthropic models was unaffected. Only Fable 5 and Mythos 5 were disabled.

Why did Anthropic shut down access for all customers, not just foreign nationals?
The US government directive prohibited access for any foreign national, whether inside or outside the United States, including Anthropic’s own foreign-born employees. Because Anthropic could not reliably identify and segregate foreign national users in real time, the only compliant path was a complete shutdown across all customers globally.

Does using Waxell Runtime protect my agents if a model is suspended?
Waxell Runtime doesn’t control a model provider’s availability decisions — that’s outside any third-party governance tool’s authority. What it does protect is your governance posture: policies enforced through Waxell Runtime aren’t embedded in any model, so they continue to operate when you route to a different model. Your team can complete a model migration without rebuilding governance rules from scratch.

Did Anthropic agree with the US government’s decision?
No. According to Anthropic’s public statement, the company disagrees “that the finding of a narrow potential jailbreak should be cause for recalling a commercial model deployed to hundreds of millions of people.” Anthropic describes the action as not adhering to principles of transparency, fairness, and technical grounding. The company said it believes the action was a misunderstanding and is working to restore access.

Sources:

  • Statement on the US government directive to suspend access to Fable 5 and Mythos 5 — Anthropic
  • Claude Fable 5 and Claude Mythos 5 — Anthropic
  • Anthropic’s Claude Fable 5 is a version of Mythos the public can access today — TechCrunch
  • Anthropic disables Fable and Mythos AI models following U.S. government export ban — Fortune
  • When a Government Pulls an AI Model: What the Fable 5 and Mythos 5 Suspension Means for Security Teams — Snyk
  • Anthropic suspends top AI models after U.S. export control order — Nextgov/FCW

Three Models, Zero API Calls: Real-Time Meeting Intelligence on Apple Silicon

Originally published at thunderkitty.app/learn

Thunder Kitty’s Labs features run topic segmentation and agenda tracking live, entirely on-device — and getting a sentence-embedding model onto the Neural Engine took seven attempts and a fight with a silent CoreML bug.

Thunder Kitty 1.9.0 adds a Labs section in Settings with two experimental features: a Live Topic Timeline that segments a meeting into topics as you record, and Live Agenda Tracking that marks agenda items as they get covered. Both run in real time, entirely on your Mac.

Running them means running three models at once. The interesting part wasn’t the idea — it was getting one of those models, a sentence-embedding model, onto the Neural Engine. That took seven attempts and a fight with a silent CoreML bug that produces plausible-looking garbage and no error.

This is how the features work and what broke along the way.

Where this came from

Two ideas converged.

An early user wanted a live jargon buster — not a search box (he could already ask Google or Claude), but something that would notice when a term was probably unfamiliar to him and surface the definition on its own, in real time. Separately, we’d wanted a live meeting timeline for a while: a vertical view that grows as the meeting goes, showing topic flow and recurring themes as they happen.

The common thread is timing. The meeting is happening now, so the intelligence has to happen now — not as a batch job after everyone hangs up.

The timeline and agenda tracking shipped in 1.9.0; the jargon buster is still ahead of us. All of it runs on-device, with no network and no per-call cost — the same promise as the rest of the app. Turn on airplane mode and it still works.

The architecture: three models

Different tasks need different models. Here’s what runs during and after a meeting:

Model What it does Latency
all-mpnet-base-v2 via CoreML Topic segmentation (which sentences belong together) 5–20ms
Apple Foundation Models Topic labeling, utterance classification 200ms–2s
Qwen 3.5 4B / 9B via MLX (downloaded once) Post-meeting summaries 25–35 tok/s

Models 1–2 run live during the meeting; model 3 runs after. The Neural Engine handles the embedding and labeling work, the GPU handles the summary model, and they don’t fight each other for resources.

The hard part was model 1: getting the mpnet embedding model running on the Neural Engine via CoreML. What should have been routine turned into seven attempts.

Topic segmentation: why DeepTiling

Before the CoreML story, here’s what the embedding model is actually doing.

Topic segmentation — deciding where one topic ends and the next begins — is an old problem. TextTiling solved a version of it in 1997 by computing word overlap between sliding windows and marking the valleys as boundaries. DeepTiling is the same algorithm with neural embeddings in place of word overlap. Swap the similarity function; keep everything else.

For each transcript line we compute a 768-dimensional embedding. For line i, we take the centroid of the preceding 8 lines and compare similarity. High similarity means we’re still on topic; a valley (a local minimum below a 0.12 threshold) means the topic shifted. It’s simple, parallelizable, and converts cleanly to a streaming version — which is what makes the live timeline possible.

We tested five embedding approaches: all-mpnet-base-v2, all-MiniLM-L6-v2, nomic-embed-text-v1.5, Apple’s NLEmbedding, and Apple’s NLContextualEmbedding. The algorithm was identical across all five; only the embeddings changed. mpnet won clearly — sharper valleys, better separation between on-topic and off-topic similarity, more reliable boundaries.

Which is why getting mpnet onto CoreML properly was non-negotiable.

The CoreML conversion: seven attempts

This is the part worth reading closely if you convert transformers to CoreML, because the failure is silent and the warning is misleading.

The goal

Convert sentence-transformers/all-mpnet-base-v2 to a CoreML .mlpackage. Take input_ids and attention_mask, output token_embeddings, then mean-pool and L2-normalize in Swift. Target: Neural Engine, under 20ms per sentence.

Attempt 1: the obvious approach

traced = torch.jit.trace(wrapper, (input_ids, attention_mask))
mlmodel = ct.convert(traced, ...)

Conversion succeeded. Cosine similarity between the CoreML output and sentence-transformers: 0.17. Essentially random.

coremltools had emitted two warnings during conversion:

Core ML embedding (gather) layer does not support any inputs besides
the weights and indices. Those given will be ignored.

Translation: coremltools silently drops the position_ids from the MPNet embedding layer. With no position information, the transformer produces meaningless output. It’s a known bug with no upstream fix as of coremltools 9.0, and the warning fires whether or not it actually affected your model — so you can’t tell from the warning alone. The only way to know is to compare against a reference.

Attempts 2–6: the graveyard

  • Mean pooling inside the model — coremltools crashes on dynamic integer ops in the pooling code.
  • ONNX as an intermediate — coremltools 8+ dropped ONNX support; onnx-coreml turned out to be a separate, long-deprecated package.
  • coremltools 7.x with ONNX — same problem, plus a Python 3.11 / numpy <2.0 pinning mess.
  • torch.export (ExportedProgram) — version-format incompatibility between torch 2.7 and coremltools 8.3; 9.0 accepts it but still produces garbage.
  • Pre-computing position embeddings as constants — kills one of the two gather warnings; cosine similarity still 0.17.

By attempt 6 every obvious culprit was gone and the output was still garbage.

Attempt 7: the breakthrough

The realization: MPNet doesn’t only use position embeddings in the embedding layer. It also uses relative position bias in every attention layer — another embedding lookup, computed differently from standard BERT. The whole position-handling chain was broken, not just the embedding layer.

The fix: pre-compute everything that touches position information and bypass the model’s own wiring.

class MPNetCoreMLWrapper(nn.Module):
    def __init__(self, model, seq_length):
        super().__init__()
        self.encoder = model.encoder
        self.word_embeddings = model.embeddings.word_embeddings
        self.layer_norm = model.embeddings.LayerNorm

        # Pre-compute position embeddings as a constant buffer
        pos_ids = torch.arange(padding_idx + 1, padding_idx + 1 + seq_length)
        self.register_buffer("position_embeddings",
            model.embeddings.position_embeddings.weight[pos_ids].unsqueeze(0))

        # Pre-compute relative position bias as a constant buffer
        dummy = torch.zeros(1, seq_length, hidden_size)
        self.register_buffer("relative_position_bias",
            model.encoder.compute_position_bias(dummy))

    def forward(self, input_ids, attention_mask):
        word_emb = self.word_embeddings(input_ids)      # This gather works
        embeddings = word_emb + self.position_embeddings # Constant add
        embeddings = self.layer_norm(embeddings)
        # ... run encoder with pre-computed position bias

Result:

CoreML vs sentence-transformers: avg=0.999985, min=0.999974
PASS — CoreML embeddings match sentence-transformers

Every segmentation boundary now matched the Python baseline exactly.

What to take from this

If you’re converting a transformer to CoreML and getting low cosine similarity, the gather layer is probably dropping position information. The fix is architecture-specific: you have to understand how your model encodes position before you can pre-compute it. MPNet needed two gather ops handled (position embeddings plus relative attention bias). BERT would differ. DeBERTa (another transformer variant with its own position encoding scheme) is its own special hell.

And validate against a known-good reference before trusting anything. The conversion warnings aren’t reliable signal.

Real-time agenda tracking

With segmentation working, the second feature matches live transcript content to your pre-meeting agenda as the conversation moves, so items shift from pending to in-progress to discussed in real time.

The naive version fails immediately: when someone reads the agenda aloud at the top of the meeting, every item gets “mentioned” and a naive tracker marks them all discussed before any real discussion happens.

So the tracker uses five gates, applied in order, to avoid false positives:

  1. Similarity threshold — the line must score ≥ 0.25 against the agenda item’s embedding.
  2. Distinctiveness — the best match must beat the second-best by 0.05; generic lines that match everything match nothing.
  3. Minimum matches — two distinctive matches before an item goes inProgress.
  4. Temporal spread — first and last matching lines must be ≥ 60 seconds apart before discussed; reading the agenda takes ~30 seconds, real discussion spans minutes.
  5. Speaker diversity — two distinct speakers required; agenda reading is one voice, discussion is back-and-forth.

On a 51-minute, 721-line test transcript with six agenda items: 6/6 marked discussed, no simultaneous multi-item triggers, each item firing independently with its own relevant evidence.

The live tracker is the fast, approximate pass — visual feedback while you record. The authoritative version, with full context and LLM reasoning, comes from the post-meeting pass. Keeping the live half lightweight is deliberate: the MeetMap research (ACM CSCW 2025) found that real-time meeting AI works best when it lowers in-the-moment cognitive load and leaves the user in control, rather than demanding attention mid-conversation.

Why these are in Labs

Both features shipped in 1.9.0, and both are in Labs for a reason. They work, but they’re not finished.

The timeline’s data layer is solid and the segmentation is accurate. The UI is still rough, and topic labels are only as good as the on-device labeling model on a given day. Agenda tracking clears the five gates well on clean transcripts, but messy audio, heavy cross-talk, or an agenda full of near-identical items will still trip it. They’re opt-in because we’d rather you turn them on knowing that than have them surprise you with a sub-par experience.

The short version

Three models on Apple Silicon — an mpnet embedder on the Neural Engine, Apple Foundation Models for live labeling, and a Qwen model on the GPU for post-meeting summaries — with nothing leaving the Mac and no per-call cost. The embedder fought us for seven attempts. The rest was getting the timing right.

It’s in Labs because it’s early. But it runs, it’s local, and it works in airplane mode like everything else.