Building in public.

Builders log.

One operating system.

🕸️
1,240 gvTurns
+129k lines added
CONTROL-PLANE ROUTINGDirect workroute · inspect · return

July concentrated the infrastructure that turns several nodes into one operating surface. We tightened node-gateway, Konui, and gvmesh behaviour so builders can see the fleet, direct work to the right place, and trust the state presented back.

The work also carried migrations, route contracts, and recovery paths through repeated audit and re-audit. The result is a control plane that behaves less like a collection of services and more like a dependable system for directed work.

What we built

  • Hardened node inventory, mesh routing, and control-plane feedback
  • Improved the console and gvmesh state paths used to inspect active work
  • Closed migration and contract gaps through audit-led corrections
  • Strengthened remote operations, diagnostics, and failure recovery
  • Added readiness, route, and regression evidence around these workflows
514commits
+128,600lines added
21,200lines removed
1,240gvTurns created
node-gatewaykonuigvmeshmigrationoperations
🔐
850 gvTurns
+88k lines added
CREDENTIAL CONTROLpolicy · vault · provider health

Identity, access, and provider credentials were treated as one operating foundation. July work made the rules around who receives access, how credentials are stored, and how health is surfaced more deliberate and reviewable.

What we built

  • Strengthened credential authority and recipient access grants
  • Centralised secure provider setup, refresh, and health paths
  • Closed policy and durable-state gaps through review
352commits
+88,200lines added
14,500lines removed
850gvTurns created
iasai-credentialscredentialssecurity
718 gvTurns
+74k lines added
ASSURANCE LOOPAuditVerify

The month’s delivery loop was evidence-led. Audits did not sit beside the work as commentary. They drove fixes, re-checks, and the contract evidence needed for changes to land with confidence.

What we built

  • Carried audit findings through correction and re-audit
  • Expanded tests and verification around changed contracts
  • Used review loops to prevent drift from becoming platform behaviour
297commits
+73,700lines added
12,100lines removed
718gvTurns created
auditmigrationtestsverification
🎯
197 gvTurns
+20k lines added
FIRST-SESSION PATHInviteAccessStart

The first experience of the platform gained more structure. Access, signup, and onboarding work joined up the path from invitation to useful first session without losing operator control.

What we built

  • Built operator-managed access lifecycle controls
  • Made signup and first-login paths more deliberate
  • Added durable assignment and recovery behaviour
82commits
+20,400lines added
3,400lines removed
197gvTurns created
mochisignupaccessonboarding
📈
564 gvTurns
+58k lines added
DECISION SYSTEMDecision

July also made the company easier to direct. Financial modelling, operating evidence, scoreboards, and narrative planning were developed as connected decision tools rather than separate documents.

What we built

  • Reconciled financial and operating-model evidence
  • Built clearer scoreboards and planning surfaces
  • Kept business-plan and investor narrative work connected to the model
233commits
+58,400lines added
9,600lines removed
564gvTurns created
rock-sheetfinancial-modelbusiness-planscoreboardinvestor-deck
265 gvTurns
+28k lines added
PUBLIC PROOF

Public-facing work made the product easier to understand. UI, website, copy, and social efforts focused on giving the platform a clearer voice and a more credible proof surface.

What we built

  • Refined public product surfaces and UI
  • Developed clearer copy and proof-led communication
  • Kept website, social, and portfolio work aligned
112commits
+27,991lines added
4,653lines removed
265gvTurns created
uicopylinkedingreatvibe-ai-website

The operating model took shape.

📈
1,128 gvTurns
+151k lines added
gravient-financial-model-v2.xlsx Assumptions Revenue fx: =SUM(B4:B9)*growth_rate FY2026 FY2027 FY2028 FY2029 FY2030 ARR 4.3M 7M 12.1M 28M 43M Gross Margin =B12/B4 =C12/C4 Python driver · openpyxl · xlcalculator · FastAPI :8770

June made the commercial model more usable. Financial planning, pricing, cost structure, and reporting were developed together so decisions could be traced back to operating evidence.

The goal was not simply a more detailed workbook. It was a working operating model that made assumptions visible, exposed where evidence was missing, and gave the team a common place to resolve it.

That work also tightened the connection between the financial model, the business plan, and the investor narrative. Each could now support the others without becoming the same document.

What we built

  • Reconciled financial-model assumptions and chart-of-accounts detail
  • Connected pricing, COGS, and operating evidence
  • Built decision-ready reporting and investor narrative surfaces
  • Separated model mechanics from investor-facing explanation
  • Created a clearer audit trail from source data to operating decisions
743commits
+151,359lines added
48,510lines removed
1,128gvTurns created
financial-modelxeropricinginvestor-deck
🕸️
820 gvTurns
+155k lines added
Bridge Relay WAN sponsor Node A mTLS Node B gossip Node C peer P2P 15 gossip types · ECDH credentials · CRC32C transfers

The platform moved beyond separate services. June connected the control surfaces that let directed work be seen, governed, and operated as one system.

The control plane brought together the practical loop: find the work, understand the current state, direct the next action, and receive a useful result. That is the layer that lets a growing platform remain operable rather than merely connected.

What we built

  • Developed the console and node-gateway operating paths
  • Improved topology, routing, and platform governance
  • Carried audit findings through platform corrections
  • Made operational state clearer to inspect and act on
748commits
+154,668lines added
53,518lines removed
820gvTurns created
konuinode-gatewaytopologyaudit
🔐
456 gvTurns
+105k lines added
Source has secret Consumer needs secret ECDH P-256 key exchange AES-GCM encrypt shared secret via SHA-256 materialise to HOME no plaintext in transit. ever.

June strengthened the boundary between a person and the platform. Identity and authentication work made entry paths safer, clearer, and easier to operate.

What we built

  • Hardened account, registration, and authentication paths
  • Clarified identity boundaries across product surfaces
  • Expanded audit coverage around access behaviour
515commits
+105,022lines added
33,618lines removed
456gvTurns created
iasidentityauthirs
☁️
198 gvTurns
+62k lines added
aws_sts_identity always first IAM 8 tools EC2 5 tools S3 5 tools Cost 2 tools aws_resource_summary parallel EC2 + S3 + Cost in one call read-only · 28 tools · Orgs + STS + forecasting

Cloud delivery became a more deliberate capability. Infrastructure, pipeline, and operational work made the path from change to running system more dependable.

This was not one feature. It was the connective work that makes change repeatable: a clearer delivery path, more useful feedback when it does not behave as expected, and a more reliable base for the application layers above it.

That foundation let the rest of the June work land with less uncertainty.

What we built

  • Developed cloud infrastructure and delivery automation
  • Improved pipeline and deployment controls
  • Made operational cloud state easier to inspect
  • Strengthened the hand-off from configured infrastructure to a running service
  • Added clearer delivery feedback for the people operating the platform
312commits
+61,947lines added
14,498lines removed
198gvTurns created
awscloudformationcodepipelinedelivery

The business case took shape.

📊
1,650 gvTurns
+126k lines added
gravient-financial-model-v2.xlsx Assumptions Revenue fx: =SUM(B4:B9)*growth_rate FY2026 FY2027 FY2028 FY2029 FY2030 ARR 4.3M 7M 12.1M 28M 43M Gross Margin =B12/B4 =C12/C4 Python driver · openpyxl · xlcalculator · FastAPI :8770

May was the month the financial model stopped being a loose collection of ideas and became a working planning instrument. The team established the assumptions, cost logic, and model structure needed to reason about the business.

That gave later work a base to build from: a place to test scenarios, challenge the numbers, and keep the commercial story connected to operating reality.

What we built

  • Established core assumptions and revenue logic
  • Worked through cost structure and operating dependencies
  • Made the workbook easier to test, review, and extend
  • Connected planning inputs to a clearer financial narrative
680commits
+126,000lines added
28,000lines removed
1,650gvTurns created
financial-modelassumptionscogsexcel
⚖️
1,200 gvTurns
+95k lines added
MCP tool result JSON Renderer pattern match per tool type Console output ExcelGrid widget Credential card Health status AWS resources no raw JSON ever reaches the console

Pricing became more than a number on a page. May connected the customer offer, revenue mechanics, and the economics needed to sustain it.

The work created a clearer basis for deciding what the product should charge for, how it should be presented, and which assumptions needed to hold true.

What we built

  • Explored pricing structure alongside cost to serve
  • Connected revenue assumptions to retention and growth mechanics
  • Documented the trade-offs behind the public product offer
540commits
+95,000lines added
22,000lines removed
1,200gvTurns created
pricingrevenuenrrcogs
950 gvTurns
+73k lines added
greatvibe.ai · console

The investor narrative began to gain the same discipline as the model. Product framing, market logic, and supporting material started to read as one connected argument rather than separate presentations.

What we built

  • Linked investor material back to model evidence
  • Refined the product and market story around first principles
  • Created clearer supporting surfaces for review and discussion
420commits
+73,000lines added
17,000lines removed
950gvTurns created
investor-deckmarketingfirst-principles
1,350 gvTurns
+125k lines added
Bridge Relay WAN sponsor Node A mTLS Node B gossip Node C peer P2P 15 gossip types · ECDH credentials · CRC32C transfers

The commercial work was matched by quieter platform foundations. May established the operating patterns that made the product and business surfaces easier to evolve together, rather than as disconnected experiments.

What we built

  • Strengthened the systems behind directed work
  • Connected workflow changes to more dependable delivery
  • Turned early platform ideas into reusable operating patterns
700commits
+125,000lines added
29,000lines removed
1,350gvTurns created
platformworkflowdeliveryoperations
938 gvTurns
+88k lines added
aws_sts_identity always first IAM 8 tools EC2 5 tools S3 5 tools Cost 2 tools aws_resource_summary parallel EC2 + S3 + Cost in one call read-only · 28 tools · Orgs + STS + forecasting

May also brought the product closer to the way it needed to be understood. Public surfaces, product framing, and the supporting experience started to carry the same story as the model and the capital narrative.

What we built

  • Developed clearer public product surfaces
  • Connected brand language to the working product story
  • Made the experience easier to explain, review, and extend
545commits
+87,880lines added
21,222lines removed
938gvTurns created
productwebsitebrandexperience

Platform foundations.

🎴
685 gvTurns
+64k lines added
Human Claude GVTurn Power Footer choices Turn lifecycle loop

We built greatVibe around one idea: every piece of AI work should be a card you can see, track, and act on. That is the GVTurn.

Across the first three weeks, 418 commits and 63,000 lines of code made GVTurns real. The system started simple. A card with a title and some output. Then it grew. Choices so you can steer AI work with a click. Status tracking so you know what is done, what is waiting, what needs attention.

By week three, GVTurns had flows, topics, and a curator that stitches the graph together. A single card is useful. A connected graph of cards changes how you work.

What we built

  • Card system with title, output, choices, and status
  • Power Footer with 5-zone interaction panel
  • Flow tracking links cards into work streams
  • Background curator auto-stitches the graph
  • Drift metrics hold the system accountable
418commits
+63,809lines added
5,138lines removed
685gvTurns created
coreuiarchitecture
🖥️
567 gvTurns
+48k lines added
greatvibe.ai · console

The greatVibe dashboard is where humans and AI meet. Deno, server-rendered HTML, live WebSocket updates. No framework. No build step. Fast, direct code.

240 commits shaped the console into something clear and responsive. Cards stream in as AI works. Each card renders rich HTML. Tables, code blocks, SVG diagrams, interactive widgets with inline scripts.

We shipped in phases. Each phase built on the last. No big rewrites. Steady, visible progress. The dark theme runs through everything. It looks good at 2am when you are debugging a mesh node.

What we built

  • Server-rendered HTML with live WebSocket updates
  • Rich card rendering: tables, SVG, interactive widgets
  • Dark theme designed for long sessions
  • Node-coloured input bar for mesh identity
  • 43 shipped phases in the first three weeks
240commits
+48,468lines added
2,657lines removed
567gvTurns created
uifrontend
🔍
397 gvTurns
+11k lines added
DRIFT METRICS · LIVE HTML output rate 85% Choices present 90% Interactivity rate 50% ⚠ 40% alert threshold rawturns log full event replay per session alert: HIGH interactivity < 40% action required

AI that cannot be audited cannot be trusted. We built the audit layer from day one.

Every GVTurn has a drift score. Did it include HTML output? Did it have at least two choices? The system tracks compliance rates and raises alerts when they drop below thresholds.

The audit system is not punishment. It is feedback. When drift metrics show cards are missing choices, the interaction loop is broken. The system surfaces that. Then it gets fixed.

What we built

  • Drift metrics track compliance per turn
  • actionsUsed records which choices get clicked
  • Rawturns event log for full session replay
  • Alert thresholds: interactivity < 40% = HIGH
  • Audit overrides for legitimate exceptions
137commits
+10,694lines added
1,483lines removed
397gvTurns created
compliancetrust
📐
422 gvTurns
+9k lines added
folder.ace architecture intent file.ace file purpose + trade-offs code.ts implementation decisions context read first then code commit code + ACE together. always.

ACE stands for Architecture, Context, Execution. Every file in greatVibe has a companion .ace file that documents what it does, why it exists, and how it connects to everything else.

The workflow is strict. Read the folder ACE. Read the file ACE. Then write code. This is how we scale AI-assisted development. The AI does not need to rediscover intent from code structure. The intent is written down, next to the code.

ACE files are not for humans to read. They are for machines to consume. That distinction changes how you write them.

What we built

  • Every file has a .ace companion
  • Strict workflow: folder.ace to file.ace to code
  • ACE files commit alongside code changes
  • Captures architecture decisions and trade-offs
  • Designed for machine consumption
103commits
+9,020lines added
1,915lines removed
422gvTurns created
methodologyai
📊
277 gvTurns
+29k lines added
gravient-financial-model-v2.xlsx Assumptions Revenue fx: =SUM(B4:B9)*growth_rate FY2026 FY2027 FY2028 FY2029 FY2030 ARR 4.3M 7M 12.1M 28M 43M Gross Margin =B12/B4 =C12/C4 Python driver · openpyxl · xlcalculator · FastAPI :8770

We wanted AI to work with real documents. Not summaries. Not screenshots. The actual cells and formulas.

Two Python drivers: one for Excel, one for Word. FastAPI services. The Excel driver uses openpyxl to read and write cells, xlcalculator to evaluate formulas. The ExcelGrid renderer in konui shows computed values with a formula bar above.

This is not a toy integration. Gravient runs a six-year financial model through it. Revenue projections, OpEx breakdowns, scenario analysis. All readable and editable by AI.

What we built

  • Python FastAPI drivers for Excel and Word
  • Formula evaluation via xlcalculator
  • ExcelGrid renderer with frozen headers and formula bar
  • Cell search, diff, and formula auditing
  • Powers a real six-year financial model
103commits
+28,960lines added
1,870lines removed
277gvTurns created
productivitydocuments
🎨
269 gvTurns
+26k lines added
MCP tool result JSON Renderer pattern match per tool type Console output ExcelGrid widget Credential card Health status AWS resources no raw JSON ever reaches the console

MCP tools return JSON. Nobody wants to read JSON. So we built renderers.

Each tool category gets its own renderer. The ExcelGrid renderer turns spreadsheet data into a scrollable grid with frozen headers and a formula bar. The credential renderer shows metadata with copy buttons. The health renderer shows a service card with a live status dot.

The pipeline is extensible. Each renderer registers for specific tool patterns. Widget IDs scope to the turn to prevent collisions across cards.

What we built

  • Custom renderers for Excel, credentials, service health
  • Inline scripts for filterable lists and tabs
  • Turn-scoped widget IDs prevent collisions
  • Extensible pipeline per tool pattern
  • No raw JSON ever reaches the console
82commits
+26,120lines added
2,943lines removed
269gvTurns created
uirendering
🕸️
362 gvTurns
+18k lines added
Bridge Relay WAN sponsor Node A mTLS Node B gossip Node C peer P2P 15 gossip types · ECDH credentials · CRC32C transfers

greatVibe nodes talk to each other. Not through a central server. Through a mesh.

Each node generates its own TLS certificates. Peers discover each other through gossip protocol, exchanging state every five seconds. When direct connections fail, traffic falls back to the bridge relay over WebSocket.

The mesh carries file transfers, cross-mesh API calls, and VFS operations. 15 gossip message types cover credentials, context checksums, session affinity, MCP announcements. It is the nervous system of the platform.

What we built

  • mTLS peer-to-peer with bridge relay fallback
  • 15 gossip message types across all nodes
  • ECDH P-256 credential delivery
  • File transfers with CRC32C and SHA-256
  • Cross-mesh API calls via connector proxies
80commits
+18,307lines added
7,480lines removed
362gvTurns created
infrastructuresecurity
🧠
295 gvTurns
+13k lines added
source assets optimised compiled CLAUDE.md deployed Node aware kernel scope (1) SDK rules (2) repo scope (3) UI layer (4) checksum gossip syncs context across all nodes context_compile → activate → done

Every AI session starts by reading CLAUDE.md. One file that tells the model what this project is. We built the engine that creates that file.

The context engine takes source assets and compiles them through a pipeline. context_compile merges everything into one deployable CLAUDE.md. Four scope levels let kernel rules stay separate from repo-specific context.

This is what makes greatVibe nodes self-aware. A new node joins the mesh, pulls context via checksum gossip, compiles its CLAUDE.md, and immediately knows the entire platform.

What we built

  • Compile pipeline: source assets to optimised to CLAUDE.md
  • Four scope levels: kernel, SDK, repo, UI
  • Checksum gossip for cross-node sync
  • Asset CRUD with validation pipeline
  • Nodes self-onboard from the mesh
80commits
+12,737lines added
11,295lines removed
295gvTurns created
aicontext
60 gvTurns
+4k lines added
GVTurn card content area Z1 👍 Good 🚀 Ship it ⚡ Cont. 🔍 Deeper 📤 Push 🏛 Legal tap = send · hidden in audit mode Z2 Next step Choose an action below, or type to start something new Z3 Ship it click = send prompt hold 500ms = edit key [1] shift+[1] ▶▶ Open in browser key [2] shift+[2] Next page key [3] shift+[3] Z4 TONE: Claude↑ Concise Detailed Urgent Casual 💬 🔖 📋 📤 ⋯ Z5 ⚡ 2017k tok · 🖥 18 tools · ⏰ 3.1m J johnathon SONNET ANALYSIS COMPLETED

Most AI interfaces give you a text box and a send button. We wanted more.

The Power Footer is a five-zone panel below every GVTurn card. Quick react chips for fast feedback. Action cards you can click to send or hold to edit. Tone selectors. Metrics. Every card became a small command centre.

76 commits in one week built and refined this. Keyboard shortcuts. Hold-to-edit. Responsive layouts. Passive reading became active interaction.

What we built

  • 5-zone panel: reacts, next-action, choices, tone, metrics
  • AI-suggested react chips with amber highlights
  • Hold-to-edit: 500ms press injects prompt to input
  • Keyboard shortcuts: 1-5 click, Shift+1-5 edit
  • Responsive: stacks vertical below 600px
76commits
+3,858lines added
825lines removed
60gvTurns created
uiinteraction
320 gvTurns
+21k lines added
deno test -A tests/ · 77 test files gvturn_create produces valid card drift metrics alert below threshold session create → send → terminate credential gossip deliver flow mock/prod divergence. caught context compile pipeline collab message delivery states Passed 76/77 1 failure caught before merge. Rule: tests run every turn.

We have a rule: every code-changing turn must verify tests exist and run. No exceptions.

konui runs 77 test files with Deno. gvmesh and gvmcp run Go tests. The testing-per-turn macro kicks in at turn 3 of every session.

This discipline caught real bugs. Mock/prod divergence. Migration failures. Race conditions in gossip delivery. None of them reached main.

What we built

  • Testing-per-turn rule from turn 3 onward
  • 77 Deno test files and Go test suites
  • ACE companions document test strategy and coverage gaps
  • Caught real bugs: mock/prod divergence before merge
  • 80% coverage target across both repos
71commits
+21,159lines added
2,780lines removed
320gvTurns created
testingquality
💬
129 gvTurns
+9k lines added
queued delivered read dismissed ✓ Build complete on node-fargate-prod 77 tests passed · 0 failed · 4m 12s · ready to deploy Sent 03:14 · Delivered 03:14 · Read 09:02 agent sends while you sleep · inbox when you wake SQLite + gossip + bridge SSE · 6 MCP tools

What if AI could send you a message? Not a notification. A real message with context, attachments, and thread replies.

Agents create messages via MCP tools. Messages persist in SQLite, broadcast via gossip, deliver through bridge SSE. A build finishes at 3am and the agent sends a message with the results. You open your inbox the next morning and it is waiting. Full context, not a ping.

What we built

  • AI-native async messaging via 6 MCP tools
  • Rich content blocks: GVTurn cards, HTML, data tables
  • File delivery with SHA-256 integrity verification
  • Delivery states: queued, delivered, read, dismissed
  • Cross-node delivery via gossip and bridge SSE
46commits
+9,005lines added
651lines removed
129gvTurns created
messagingcollaboration
☁️
105 gvTurns
+9k lines added
aws_sts_identity always first IAM 8 tools EC2 5 tools S3 5 tools Cost 2 tools aws_resource_summary parallel EC2 + S3 + Cost in one call read-only · 28 tools · Orgs + STS + forecasting

We gave AI eyes into AWS. Read-only eyes.

28 MCP tools cover STS, IAM, EC2, S3, Organizations, and Cost Explorer. aws_resource_summary runs EC2, S3, and cost queries in parallel. One call, full picture.

The read-only constraint is deliberate. AI should help you understand your infrastructure. It should not change it without you driving.

What we built

  • 28 read-only AWS MCP tools across 6 services
  • Parallel resource summary across EC2, S3, Cost Explorer
  • IAM auditing: unused keys, missing MFA devices
  • Cost forecasting and spend trend analysis
  • aws_sts_identity always runs first
24commits
+8,539lines added
370lines removed
105gvTurns created
awscloud
🔐
76 gvTurns
+3k lines added
Source has secret Consumer needs secret ECDH P-256 key exchange AES-GCM encrypt shared secret via SHA-256 materialise to HOME no plaintext in transit. ever.

API keys, tokens, passwords. They all need to move between nodes without anyone in the middle seeing them.

We built credential delivery with ECDH P-256 key exchange. Source node encrypts with AES-GCM. No central authority sees the plaintext. Consumer derives the shared secret and decrypts locally. Credentials materialise into the HOME directory on each node.

Gossip carries the encrypted payload. The bridge relay cannot read it. Only the consumer can.

What we built

  • ECDH P-256 key exchange for zero-trust delivery
  • AES-GCM encryption. No plaintext in transit. Ever.
  • Rotation, tiering, and export boundary controls
  • Provenance tracking per credential per node
  • Auto-materialise to HOME directory on each node
21commits
+2,733lines added
230lines removed
76gvTurns created
securityencryption
📜
55 gvTurns
+2k lines added
template prompt save versioned run one click result GVTurn deploy-checklist code-review-template financial-model-update v3 v7 v2 bulk import/export · conflict detection · mesh distribution

Sometimes you write a prompt that works so well you want to save it. The script engine is where those prompts live.

Scripts are stored, versioned, and shareable across the mesh. A deployment checklist, a code review template, a financial model update. Each becomes a script you run with one click.

Versions let you track what changed. Conflict detection catches divergence when scripts are edited on multiple nodes.

What we built

  • Script CRUD with full version history
  • Template system for common workflow patterns
  • Bulk import and export across mesh nodes
  • Conflict detection and merge resolution
  • One-click repeatable AI workflows
15commits
+1,812lines added
129lines removed
55gvTurns created
automationreuse
🎛️
61 gvTurns
+3k lines added
card mode HTML cards → dashboard headless mode {"status":"ok", "result":{...}} JSON → machine agent delegation node to node create · extend · terminate · escalating turn context

Every AI conversation in greatVibe is a session. Sessions have lifecycles. Card mode renders GVTurn cards for interactive work. Headless mode returns structured JSON for machine-to-machine communication.

Agent delegation lets one session spawn work on another node. This is how multi-node workflows run. One session orchestrates. Others execute.

Turn context escalates as sessions grow. By turn 3, testing macros kick in. By turn 10, HTML enforcement applies. The system gets stricter as the session deepens.

What we built

  • Card mode for interactive dashboard work
  • Headless mode for machine-to-machine JSON responses
  • Agent delegation spawns work on other mesh nodes
  • Session lifecycle: create, extend, terminate
  • Escalating turn context reinforcement from turn 3
13commits
+2,992lines added
396lines removed
61gvTurns created
sessionsorchestration
🌉
91 gvTurns
+8k lines added
Node A gvmesh:8443 Node B gvmesh:8443 Bridge Relay WebSocket WAN max 10MB payload Priority Queues realtime cap 1000 high cap 500 normal cap 500 low cap 200 Hello / Welcome / Ping / RelayFrame protocol mTLS direct · bridge fallback · 1,284 lines bridge.go

Mesh nodes do not always have direct routes to each other. Sometimes they are behind firewalls, on different networks, or on the other side of the world. The bridge relay solves this.

Every node connects to the bridge over WebSocket. When direct mTLS fails, traffic falls back to the relay. No configuration needed.

The relay runs four priority queues. Realtime traffic for session messages. High priority for credentials. Normal for context sync. Low for bulk file transfers. The 1,284 lines of bridge.go handle framing, authentication, heartbeat, and queue management. Every byte that crosses the WAN goes through this code.

What we built

  • WebSocket relay for WAN connectivity across networks
  • Four-tier priority queues: realtime 1000, high 500, normal 500, low 200
  • RelayFrame protocol: Hello, Welcome, Ping, data frames
  • Maximum payload 10MB per frame
  • 1,284 lines of bridge.go built from scratch
38commits
+8,120lines added
940lines removed
91gvTurns created
infrastructurenetworking
📋
80 gvTurns
+5k lines added
AI Session start prompt text tool_call tool_result complete JSONL Log immutable · append-only {type,seq,ts} {requestId} {data?} {toolName?} {error?} sparse fields Replay reconstruct full session from events turn briefing 12 event types · full session replay · rawturns API

AI is a black box. We opened it.

Every session writes an immutable JSONL event log. Each line is a RawTurnEvent with a type, sequence number, and timestamp. start kicks off the turn. prompt captures the human input. text records each token chunk. tool_call and tool_result log every MCP interaction. complete closes the turn.

Replay the log and you reconstruct the entire session. Not a summary. The exact sequence of events, in order.

This is how new sessions get briefed. Load the last few turns from rawturns. Reconstruct what happened. Give the next AI session a running start.

What we built

  • Immutable JSONL append-only event log per session
  • 12 event types: start, prompt, text, tool_call, tool_result, complete, error, system
  • Sparse RawTurnEvent struct with optional fields per type
  • Full session reconstruction by replay from first event
  • Powers turn briefing for new sessions
29commits
+4,870lines added
312lines removed
80gvTurns created
observabilityaudit
🌊
143 gvTurns
+7k lines added
Flow emergent · auto-created genesis Session card · headless · agent evidence Turn gvturn_id · requestId decision ToolCall tool · args · result output edge deliverable continues edge debug thread 5 edge types · emergent creation · background curator

GVTurns are cards. Flows are the stories those cards tell.

When you start work, a flow is created automatically. Every turn links to that flow as an evidence edge. Tool calls become decision edges. When work ships, it becomes an output edge. Debug threads chain together via continues edges.

The graph builds itself. You never have to think about it. The curator runs in the background, linking orphaned turns, detecting debug threads, keeping the graph clean.

Zoom out from a single card and you see the full arc of work. A feature from first prompt to shipped output, every decision and course correction visible in the graph.

What we built

  • Flow, Session, Turn, ToolCall hierarchy
  • Five edge types: genesis, evidence, decision, output, continues
  • Emergent creation via genesisKontaskId on first prompt
  • Background curator auto-links orphaned turns
  • DecisionSummary captures design decisions mid-session
44commits
+7,340lines added
890lines removed
143gvTurns created
graphorchestration
⚖️
114 gvTurns
+6k lines added
ProviderRegistry capability scoring · quota tracking BackendRegistry LLM backends AgentRegistry registered agents QuotaTracker dual windows Capability Scoring required AND hard filter preferred scoring ranked list RollingWindow WeeklyCeiling quota round_robin least_used Account Rotation Strategies RateLimit · multi-LLM · automatic failover

Not all models are the same. Not all tasks need the same model. Provider orchestration routes work to the right backend automatically.

The ProviderRegistry scores candidates in two passes. Required capabilities filter out backends that cannot do the job. Preferred capabilities rank what remains. The highest-scoring available backend wins.

Quota tracking runs two windows simultaneously. A rolling window catches rate spikes. A weekly ceiling stops runaway spending. When one account hits its limit, rotation kicks in. Quota rotation picks the best remaining account. Round-robin distributes load evenly. Least-used finds the idlest backend.

The result is an AI platform that keeps working even when individual accounts get throttled.

What we built

  • ProviderRegistry with BackendRegistry and AgentRegistry
  • Capability scoring: required AND filter plus preferred scoring
  • QuotaStatus with RollingWindow and WeeklyCeiling dual tracking
  • Three account rotation strategies: quota, round_robin, least_used
  • Automatic failover when quota or rate limits are hit
32commits
+6,210lines added
540lines removed
114gvTurns created
aiinfrastructure
🎮
98 gvTurns
+6k lines added
gv.session_id human prompt Commander enrichSessionSend 1,465 lines ags_xxx Claude session processSessionImages extract base64 from prompt write to disk per turn /tmp/gvmesh-images/ {turnID}/{index}.png asyncCommands · session routing · image dispatch

When you type a prompt in greatVibe, it does not go straight to Claude. It goes through the Commander first.

enrichSessionSend takes the raw human input and builds the full context package. It resolves gv.session_id to the Claude-side ags_xxx session identifier. It injects turn context, macros, and system instructions. It calls processSessionImages to extract any base64-encoded images from the prompt and write them to disk before the model call.

The Commander is the translation layer between the human-facing session and the model-facing API. 1,465 lines that handle the gap between what you type and what Claude receives. Get this wrong and every AI interaction in the platform breaks.

What we built

  • gv.session_id to ags_xxx translation on every send
  • enrichSessionSend builds the full context for Claude
  • processSessionImages extracts base64 images from prompts
  • Images written to /tmp/gvmesh-images/{turnID}/{index}.png
  • asyncCommands map for non-blocking session dispatch
35commits
+5,980lines added
720lines removed
98gvTurns created
aisessions
🔒
70 gvTurns
+3k lines added
Self-Signed CA ECDSA P-256 · 10 year · MaxPathLen:1 Node Cert A 1 year · SAN Client+Server Node Cert B 1 year · SAN Client+Server Node Cert C 1 year · SAN Client+Server IssueNodeCert / SignCSR / VerifyCertificate GenerateNodeCert dual ExtKeyUsage CA-only validation P-256 keygen ClientAuth+ServerAuth mTLS enforced zero-trust · auto-rotate · no external CA needed

We do not trust networks. We trust certificates.

Every gvmesh node generates its own ECDSA P-256 key pair on first start. It submits a certificate signing request to the CA. The CA signs it with MaxPathLen:1 to prevent intermediate CA abuse. The node gets a cert valid for one year.

Every connection between nodes requires mutual TLS. Both sides present certificates. Both sides verify against the CA. No exceptions.

The CA lives at 10 years so it does not need rotation during the platform lifetime. Node certs rotate at one year. The IssueNodeCert, SignCSR, and VerifyCertificate functions in ca.go and certs.go are the foundation everything else builds on.

What we built

  • ECDSA P-256 throughout: CA keys, node keys, ephemeral ECDH
  • Self-signed CA valid for 10 years, node certs for 1 year
  • Dual ExtKeyUsage: ClientAuth plus ServerAuth on every cert
  • SAN support for hostname and IP binding
  • CA-only validation: no certificate chain lookups needed
18commits
+3,420lines added
290lines removed
70gvTurns created
securityinfrastructure
💬
876 gvTurns
+22k lines added
@dev-hugo what's the deploy status? chitchat @mention sidecar-bot Agent + gvmcp tools Claude reply F1 etiquette: reply when @-mentioned silence filter · markdown subset · panic-stop cross-mesh via bridge · console_inject to dashboard

chitchat shipped as a small UI strip in March. Through late April it grew into a real conversation surface. Bots joined.

The first sidecar-bot (originally called haiku-bot) responded to @mentions on a single mesh. By the end of April it was running as a real Agent. Mention your hostname and you get a Claude CLI session spawned per turn, with the full gvmcp toolkit at hand. Reads files. Greps the codebase. Runs commands. Returns the answer in line.

We rewired bot etiquette through the F1 prompt sequence. Group-chat manners. Reply only when @-mentioned or with concrete useful info. Light markdown subset for bold, italics, code, lists, links. Silence filter to stop the bot from meta-narrating its own quietness. A panic-stop button for when a conversation runs hot.

The chitchat UI itself went through fifteen iterations in ten days. Swipe gestures, Inter font, markdown rendering, history replay on reconnect, ack and read-receipts, peer presence pills, a mobile portrait pass for iPhone, Z Fold and Pixel.

By April 30 the gv.sidecar card showed live sparklines, cost rollups and per-model breakdowns. The bot is standard now, not experimental.

What we built

  • Sidecar-bot runs as an Agent with full gvmcp tool access
  • F1 etiquette prompt: group-chat manners, markdown subset, silence filter
  • chitchat UI through 15 iterations: swipe, history replay, ack receipts, mobile portrait
  • Cross-mesh bots reply through the bridge
  • konui_console_inject: sidecar runs a turn directly on your dashboard
  • gv.sidecar card: sparklines, cost rollup, per-model breakdown
280commits
+22,000lines added
6,000lines removed
876gvTurns created
sidecar-botschitchatagentsui
🌐
584 gvTurns
+13k lines added
MESH A konui-a gvmesh node user-a MESH B konui-b gvmesh node user-b Bridge relay konui-peer + mesh-permit transport · scoped permission presence · proxy · console_inject

Each greatVibe mesh ran in its own bubble through March. In late April that changed.

The wave-3.5 push split the old mesh-peer-link concept into two layers. konui-peer carries the transport: URL, tokens, connection state, health. mesh-permit carries the permission: scopes, allowed proxy calls, daily cost cap. Same name, different facets. Today they bind 1:1. Tomorrow we can issue many permits per transport without breaking anything.

Wave-3.5.4 wired the gvmesh Reverse API Proxy. A sidecar mesh can route REST calls through its sponsor konui via the bridge and hit any endpoint that policy allows. mesh_permit_call became the standard tool for cross-mesh API work. konui auto-discovers the bridge-relay URL at startup. The peernodes cache means standalone peer meshes show up in node_list instead of looking empty.

The 16th gossip type landed: user_presence. Each konui heartbeats per-user presence into its local gvmesh. The bridge fans presence updates across meshes via konui-peer. You see who is online on other meshes in real time.

konui_console_inject is the headline UX win. A sidecar bot can compose a gvturn and inject it onto a target user's dashboard. Target-user-filtered, multi-tab deduped, bridge-trusted. Cross-mesh chat is now a real assistant surface.

What we built

  • konui-peer (transport) + mesh-permit (permission) split, wave-4d phase 1
  • gvmesh Reverse API Proxy + mesh_permit_call standard tool
  • Auto-discovery of bridge URL + peernodes cache for sponsor meshes
  • user_presence: 16th gossip type, live cross-mesh presence
  • konui_console_inject: cross-mesh sidecar bots compose turns on your dashboard
  • Cross-mesh chitchat replies through the bridge
170commits
+13,000lines added
4,000lines removed
584gvTurns created
cross-meshkonui-peermesh-permitbridgepresence