T3 Cloneathon & Community Clones Research: t3-cloneathon, omnichat, NotT3Chat & TomDoesTech/t3-chat (2026)
This document provides the file-and-symbol-anchored audit of 4 additional T3 repositories cloned in ~/dev: lulkebit/t3-cloneathon (99eb9ab1), guitaripod/omnichat (b864415e, 3rd Place T3 Cloneathon Champion), shaltielshmid/NotT3Chat (913afaae), and TomDoesTech/t3-chat (4cc8fac3). It details t3-cloneathon’s parallel Multi-Model Consensus SSE fan-out and Flesch-Kincaid ResponseQualityAnalyzer, omnichat’s Cloudflare D1 Battery Unit (1 BU = $0.001) billing ledger and tree-branch divergencePoint comparison, NotT3Chat’s single-file C# .NET 10 SignalR SemaphoreSlim(1) zero-drop mid-stream multi-tab join and 1024-slot n-gram RepetitionGuard, and TomDoesTech/t3-chat as a taxonomic control case (create-t3-app human WebSocket chat).
1. lulkebit/t3-cloneathon (~/dev/t3-cloneathon — Multi-Model Consensus & Quality Analytics)
Section titled “1. lulkebit/t3-cloneathon (~/dev/t3-cloneathon — Multi-Model Consensus & Quality Analytics)”- Commit SHA:
99eb9ab16c9349e9973138b5b71b0af5e9d70b8b - Stack Clarification: Although branded
"convex-chat"inpackage.jsonandREADME.md, its backend is Next.js 15.3.8 App Router + Supabase Auth/PostgreSQL/Storage (@supabase/supabase-js^2.50.0) + OpenRouter (zero Convex dependencies). - PostgreSQL Schema (
LOCAL_TESTING_GUIDE.md:97-262&src/types/chat.ts):profiles(openrouter_api_key),conversations(modelstores"consensus:modelA,modelB,..."),messages(contentstores JSON-serializedConsensusResponse[]in consensus mode),attachments, andmessage_quality_metrics. - Multi-Model Consensus SSE Fan-Out (
src/app/api/chat/consensus/route.ts,src/components/ConsensusMessage.tsx):- Dispatches
models.map(...)in parallel viaPromise.all(modelPromises)over a single multiplexedReadableStreamSSE response emittingconsensus_start, per-modelconsensus_update({ modelIndex, model, content, isStreaming }),consensus_complete(withresponseTimeandqualityMetrics),consensus_error,title_update, andconsensus_final. ConsensusMessage.tsxtoggles between Stacked View (List) and Side-by-Side Grid View (Grid3X3, 1–4 columns) with average response latency metrics.
- Dispatches
- Heuristic
ResponseQualityAnalyzer(src/lib/response-quality-analyzer.ts&/api/quality-analytics):- Computes a 0–100
qualityScore = relevance * 0.3 + clarity * 0.25 + coherence * 0.2 + completeness * 0.2 + readability * 0.05(minus latency/brevity penalties) using Flesch Reading Ease (206.835 - 1.015*(words/sentences) - 84.6*(syllables/words)), 19 logical connectors, structural markdown regexes, lexical repetition ratio, and prompt keyword overlap. GET /api/quality-analytics(src/app/api/quality-analytics/route.ts) aggregatesmessage_quality_metricsover7d/30d/90dwindows into daily trends, per-model rankings, and 5-tier quality distributions (excellent,good,fair,poor,veryPoor).
- Computes a 0–100
2. guitaripod/omnichat (~/dev/omnichat — 3rd Place T3 Cloneathon Champion)
Section titled “2. guitaripod/omnichat (~/dev/omnichat — 3rd Place T3 Cloneathon Champion)”- Commit SHA:
b864415e55ba3e4bb3489b06919e405031b8bb8a - Stack: Next.js 15.3.3 Edge (
runtime = 'edge'), Cloudflare Pages/Workers + D1 (SQLite via Drizzle ORM0.44.2, 13 tables insrc/lib/db/schema.ts) + R2 (R2_STORAGE), Clerk (web/api/*) + native Apple Sign-In JWT (/api/v1/*), Stripe, and 6 direct AI providers (openai,anthropic,google,xai,deepseek,ollama). - “Battery System” Pay-Per-Use Token Billing Ledger (
src/lib/battery-pricing.ts,src/lib/usage-tracking.ts,src/services/ai/stream-wrapper.ts):- Defines 1 Battery Unit (BU) = $0.001 (150% markup + 30% safety buffer over provider token rates: e.g.,
gemini-1.5-flash= 0.61 BU/1K,gpt-4.1-mini= 3.25 BU/1K,claude-sonnet-4= 29.25 BU/1K,claude-opus-4= 146.25 BU/1K, local Ollama = 0 BU). - Pre-flight check (
checkBatteryBalanceinsrc/app/api/chat/route.ts:219) returns HTTP402 Payment RequiredwhentotalBalance < estimatedCost. createTokenTrackingStream(stream-wrapper.ts) counts streamed tokens viaStreamingTokenTrackerand on stream finish executes a 4-step D1 write (trackApiUsageinusage-tracking.ts:130-198): (1) insertapi_usage, (2) decrementuser_battery.total_balance, (3) append signed row tobattery_transactions(balance_after), (4) upsertdaily_usage_summary, then emits a finaldata: {"type":"usage","usage":...,"battery":{"batteryUsed":...,"newBalance":...}}SSE frame beforedata: [DONE].
- Defines 1 Battery Unit (BU) = $0.001 (150% markup + 30% safety buffer over provider token rates: e.g.,
- Tree Branching &
divergencePointComparison (src/services/branching/branch-manager.ts,src/components/chat/branch-comparison.tsx):BranchManager.buildMessageTreeconstructs aMessageNodetree frommessages.parent_id(main,main-<msgId>-0), andBranchComparisonrenders a multi-column side-by-side comparison modal across any N selected branches, automatically computingdivergencePointto visually separate shared prefix history from divergent branch responses.
- Dual-Mode Ollama (
src/services/ai/providers/ollama.ts,ollama-client.ts) & Offline Sync (offline.ts,sync.ts):OllamaClientProvidertalks directly from the browser tohttp://localhost:11434/api/chat, bypassing the Cloudflare Worker edge route and battery ledger (isOllamaModel).SyncServicequeues offline mutations in IndexedDB (omnichat-offlinev1syncQueue) and replays them onwindow.addEventListener('online')with 3 retries.
- Go CLI API Validator (
go-cli/cmd/omnichat-validator/main.go): Validates all 43 OpenAPI endpoints (openapi/openapi.json) across 10 categories using--clerkor--bearerJWT auth.
3. shaltielshmid/NotT3Chat (~/dev/NotT3Chat — C# .NET 10 + SignalR + RepetitionGuard)
Section titled “3. shaltielshmid/NotT3Chat (~/dev/NotT3Chat — C# .NET 10 + SignalR + RepetitionGuard)”- Commit SHA:
913afaaea495a63076bf085d66597ca0f98a7b04 - Stack: Single-file 1,147-LoC C# 12 / .NET 10 (
net10.0) ASP.NET Corebackend/Program.cs+ SignalR (ChatHubat/chat,MaximumReceiveMessageSize = 64 KB) + EF Core SQLite +IMemoryCache+LlmTornado 3.8.26(10 providers) +ExaApiService+ React 19 (streamdown 1.4.0withparseIncompleteMarkdown={true}). - Zero-Drop Mid-Stream Multi-Tab Join via SignalR Groups +
SemaphoreSlim(1)(backend/Program.cs:623-707, 750-795):- In-flight streams are cached in
_memoryCacheunderconvoIdasStreamingMessage(StringBuilder SbMessage, NotT3Message Message, SemaphoreSlim Semaphore, CancellationTokenSource Ct). - When a client refreshes or opens an active chat in a second tab (
ChooseChat(convoId)whileconversation.IsStreaming == true), the hub acquiresawait currentMsg.Semaphore.WaitAsync(), sendsBeginAssistantMessage+ the accumulatedcurrentMsg.SbMessage.ToString()viaNewAssistantPart, and adds the connection to theconvoIdSignalR group before releasing the semaphore—guaranteeing zero dropped or duplicated tokens at the join boundary.
- In-flight streams are cached in
- 1024-Slot Power-of-2 Ring-Buffer
RepetitionGuard(backend/Program.cs:1080-1145):- Uses a fixed ring buffer (
BufferSize = 1024, bitmaskModuloNumber = 1023,[MethodImpl(MethodImplOptions.AggressiveInlining)]) of token hash codes (token.GetHashCode()) to detect both single-token loops (MaxTokenRep = 32) and repeating n-gram cycles of periodp ∈ [3, 12](MinGramRep = 5), automatically cancellingstreamingMessage.Ctwhen a model enters a degeneration loop.
- Uses a fixed ring buffer (
- Inline
<think>&<WebSearch>Tag Interleaving & Context Sanitization (backend/Program.cs:554-586, 629-670):- Streams
<think>...</think>and<WebSearch>[...]</WebSearch>inline (capping Exa calls attotalSearches < 3per turn). On subsequent turns,CleanMessageFromSpecialEntitiesstrips<think>[\S\s]*?</think>and replaces<WebSearch>.*?</WebSearch>with[web_search was called, results removed to save context.]while escaping prompt-injection tokens (<|im_start|>,<tool_call>).
- Streams
4. TomDoesTech/t3-chat (~/dev/t3-chat-tomdoestech — Taxonomic Control Case)
Section titled “4. TomDoesTech/t3-chat (~/dev/t3-chat-tomdoestech — Taxonomic Control Case)”- Commit SHA:
4cc8fac3ec947e7b9889588ff292d66862b0c5b0 - Taxonomic Role: Created in July 2022 (
prisma/migrations/20220717035410_init) as acreate-t3-app(“T3 Stack”) tutorial project, this repository is a human-to-human WebSocket chat room app, not an AI assistant clone oft3.chat. - Architecture: Next.js 12.2.1 Pages Router + tRPC v9 (
httpBatchLinkon:3000+wsLinkon:3001viasrc/server/wsServer.tsapplyWSSHandler) + Prisma 4 SQLite + NextAuth.js 4. Chat messages are ephemeral in-memory events bridged via a NodeEventEmitter(room.send-messagemutation →ctx.ee.emit→room.onSendMessagetrpc.Subscription).