Title: Resilient terminal Grok via ASCENT on Starlink (and beyond)
Status: Research synthesis + implementable architecture (v0.2, SkyPulse)
Date: 2026-08-12
Scope: Public evidence only. Legal stock Starlink kit. No RF hacks.
Product hooks: Pitchfork-and-Torch/ascent SPEC 1.0.0-rc1, ascent-wire 2.1.0, SkyPulse PATHHINT, live Wire Lab 3.0 Crystal Wire.
ASCII hyphens only in this document.
Three layers people collapse into one slogan:
| Layer | What it actually is |
|---|---|
| Starlink | Last-mile IP (dish <-> LEO <-> optional ISL mesh <-> ground gateway <-> PoP <-> public Internet) |
| ASCENT | Wire encoding + agent session grammar + optional ASCENT-D outer ECC. Not a network. |
| Grok | Frontier-scale cloud inference at xAI (api.x.ai / Colossus-class terrestrial GPUs) |
Achievable today: When your fiber/cell dies but the public Internet and xAI still live, Starlink restores the pipe; ASCENT structures flaky sessions; a local model keeps a brain when the API is gone.
Not achievable as a consumer product today: Full cloud Grok while "worldwide terrestrial Internet is completely unavailable." That scenario almost certainly kills gateways, PoPs, and xAI DCs. ISLs do not host Grok.
One sentence: Starlink keeps you on the public Internet when your last mile dies; ASCENT keeps sessions and payloads honest when the link is ugly; SkyPulse PATHHINT gives CCA/apps a fail-closed freeze/capacity seed so LEO flaps waste fewer retransmits; only local models keep a brain when the public Internet (and therefore xAI) is actually gone.
SkyPulse does not make Starlink faster at RF. It improves usable session bandwidth and session continuity. Not a bare "bandwidth upgrade."
Priority for this architecture: usable session bandwidth, not PHY Mbps slogans.
| Piece | Role |
|---|---|
PATHHINT / SKYSTATE 0xC5 schema 0x01 |
Compact hint: path_id, next_capacity (predicted sender bottleneck bits/s, not RF PHY), freeze_until, confidence, ttl; optional obstruction/elev |
| Fail-closed | CRC/short-RS fail, stale TTL, unknown version => erase; never apply a bad hint to CCA |
| ASCENT-E-LEO | Usage profile of E: light CRC or short RS(255,239) I=1 (not stacked); no full P9 RS on interactive IP |
| ASCENT-D | Keep for spool / deep-space / high-BER; RS(255,223) erase-on-fail |
| QUEUE | Daemon mode when obstruction or RTT flaps; CLOUD/EDGE still name the brain honestly |
LeoAware (OrbitStack) hybrid fuse: PATHHINT may seed freeze + next_capacity; Orb pathID still owns REPROBE when not suppressed; assist suppress ~2s / no hybrid util-MD; predictive pre-hop freeze is growth freeze only and must never gate ep:loss_burst. Absolute dual-gate remains a paid OrbitStack product fence. See docs/SKYPULSE.md and docs/ORBITSTACK-LEOAWARE-BRIDGE.md.
Canonical lab unit (50 Mbps is a hint, not a dish measurement):
c5 01 00 1a 0e 00 00 00 00 00 00 00 42 02 fa f0 80 ...
Python: encode_pathhint / canonical_pathhint_bytes in ref/ascent_codec.py.
| Plane | Role | Satellite / LLM use |
|---|---|---|
| P0 | Sacred ASCII byte < 0x80 forever |
Greppable logs, prompts, shell-safe transcripts over any path |
| P1 | Fixed control fences | Stream structure survives partial readers |
| P5 | Agent frames 0x9A..0x9B + 0xC1 opcodes |
ROLE, TOOL, THINK, HANDOFF, CAP, SAFETY, STOP for Grok turns |
| P6 | Multimodal 0x9D 0x4D |
Prefer REF over INLINE on flaky links; hash-bound assets |
| P7 | Quantum-safe control 0x9C |
Session keys/kids; keys stay OOB |
| P8 | DEF self-maps | Profile negotiation, ECC table, freeze mid-cruise |
| P9 / ASCENT-D | Outer sync D5 E5 C0 DE + RS(255,223) GF(256) |
Erase-on-parity-fail; no mojibake agents; I=8 default |
Profiles: ASCENT-7 (identity ASCII) | ASCENT-E (Earth) | ASCENT-E-LEO (usage of E: PATHHINT, light integrity) | ASCENT-D (deep outer) | ASCENT-A (archive).
Fail policy (D): parity/CRC fail => erase unit. Never soft-fill corrupt TOOL/SAFETY.
Sources: local SPEC.md C.1-C.5, ref/ascent_d.py, docs/AGENT-LOOP.md. Confidence: High (normative product).
| Claim | Confidence | Implication |
|---|---|---|
| User path needs some Earth gateway + PoP for public Internet apps | High | No pure-space Grok for customers |
| Optical ISLs form a mesh; can route to distant gateways | High | Helps remote/ocean coverage; still needs exit |
| Typical land RTT ~25-60 ms; residential tens-hundreds Mbps down, ~10-40 Mbps up | High | Fine for chat tokens; budget uplink for large prompts |
Dish local gRPC 192.168.100.1:9200 (community RE; status/history) |
High | Diagnostics only; not official residential API |
| Enterprise Management/Telemetry APIs exist for fleets | High | Ops, not inference |
| Direct-to-Cell: SMS/select apps; not full HTTPS agent sessions | High | Emergency C2 only |
| V3 / orbital AI / Marslink: roadmap or early deploy, not customer Grok path | Med | Phase 3+ speculation |
| Power: Standard dish tens of watts average; needs sky + account | High | UPS is part of the system |
Primary anchors: starlink.com/technology, starlink V3 updates, performance legal docs, RIPE Labs Starlink measurements, sparky8512/starlink-grpc-tools, T-Mobile T-Satellite, xAI api.x.ai.
| Dimension | DTN (BPv7 + CLA + optional LTP) | ASCENT-D |
|---|---|---|
| Problem | Intermittent multi-hop store-forward, long delay | Frame integrity + erase-on-fail for agent wire |
| Layer | Overlay network | Application / codec |
| Starlink chat default | Poor (IP already exists) | Good with QUIC/TCP |
| Deep space later | Required for non-IP contacts | Complementary E2E integrity |
Stacking decision:
- Today Starlink IP: ASCENT (+ optional ASCENT-D) over QUIC/TCP/HTTPS. No BP daemon.
- True deep space later: ASCENT as bundle ADU (A) + ASCENT-D E2E (C) + LTP red-part / optional ECLSA + CCSDS link coding.
- Reject: ASCENT as a custom convergence-layer codec (breaks ION/HDTN/uD3TN interop).
FEC note: RS(255,223) rate ~0.875 matches classical CCSDS outer RS (t=16 errors / up to 32 erasures). ASCENT-D does not replace TM LDPC/turbo or LTP ARQ. On Starlink IP, do not stack P9 RS on top of PHY+TLS (double-FEC tax). Soft-decision LDPC/turbo beat hard RS on AWGN; RS + erase-on-fail wins for fail-closed agent safety on short spool / deep-space ADUs. PATHHINT optional IEEE CRC-32 is integrity, not FEC.
Sources: RFC 9171 BPv7, RFC 5326 LTP, CCSDS 131.0-B TM coding, ION/HDTN/uD3TN public trees. Confidence: High for standards; Medium for ECLSA packaging.
| Interface | Use |
|---|---|
https://api.x.ai/v1 (Bearer) |
Cloud Grok |
| Normal IP over Starlink WAN | Transport |
| Dish gRPC :9200 status/history (community tools) | Link health gating |
| Local Ollama / edge OpenAI-compatible | Offline brain |
| Enterprise Starlink APIs | Multi-terminal ops (account-gated) |
Do not invent: residential dish REST for routing; space-side Grok endpoint; "secret Musk mesh" SLA.
+------------------+ +-------------------+ +------------------+
| Operator TUI | | ascent-satd | | Local edge LLM |
| (readline/CLI) | <-> | session + queue | <-> | (Ollama etc.) |
+------------------+ | mode: cloud|edge | +------------------+
| sacred-meter |
+---------+---------+
|
ASCENT stream (P0+P5+P6+P7 + SkyPulse PATHHINT)
optional P9 ASCENT-D wrap (spool/D only)
|
+---------v---------+
| Transport adapter |
| HTTPS/QUIC to API |
| or store-forward |
+---------+---------+
|
+--------------------+--------------------+
| | |
+--------v-------+ +--------v-------+ +--------v-------+
| Home fiber WAN | | Starlink dish | | (future BP ADU)|
| (primary) | | Ku LEO last mi | | deep-space lab |
+--------+-------+ +--------+-------+ +----------------+
| |
+----------+---------+
|
SpaceX gateway + PoP (must be up for cloud)
|
public Internet -> api.x.ai -> Colossus GPUs
Physical / RF (stock Starlink kit) or optical ISL (SpaceX internal)
-> IP (Starlink provides)
-> TLS 1.3 / QUIC (session crypto)
-> optional app store-and-forward queue
-> ASCENT wire (P0 prose + P5 agent + P6 REF + P7 + PATHHINT)
-> optional ASCENT-D P9 RS(255,223) erase-on-fail (not default on Starlink IP)
-> Grok session logic / local runtime
| Mode | When | Brain |
|---|---|---|
| CLOUD | api.x.ai reachable |
Full Grok |
| EDGE | WAN up but API down, or forced offline | Local quantized model |
| QUEUE | Link flapping / rain / 15s reconfig / PATHHINT obstruction | Buffer ASCENT ADUs; flush on stable RTT |
| DEAD | No power / no sky / no model | Honest UX: cannot help until power or local model loads |
Prefer ASCENT-7 for pure ASCII prompts. Add agent frames only when needed.
ASCENT/1.0
session=sat-demo-001 turn=42 mode=cloud
[user prose as P0 bytes]
Status of the Starlink failover path?
9A C1 01 00 02 00 00 06 05 67 75 69 64 65 9B
# ROLE=guide (canonical Hello Universe shape)
9A C1 01 00 03 00 <flags> <len> <name_len> dish_status <TLV INVOKE_ARGS JSON> 9B
Args must escape raw 0x9A/0x9B as C1 1B <byte>.
Tool results return inside SAFETY (data, never silent control):
9A C1 01 00 07 00 <flags> <len> <class:u8=untrusted_tool_result> <body> 9B
Large images/logs: do not INLINE megabytes. Emit P6 kind=REF with sha-256.
9D 4D 01 <codec:u16be> <flags> 01 <32-byte sha256> <len:u64be> cid://...
Logical unit U (<= 8192 B on D):
D5 E5 C0 DE | profile=0x44 | ecc_hdr RS(255,223) I=1..8 | len:u32be | unit | parity
On fail: erase unit; hunt next sync. Never display corrupt agent bytes.
ASCENT/1.0
DEF-lite: profile=E mode=cloud last_good_turn=41 api=ok dish=obstruction=0.02
Not on interactive path. Treat as P6 REF or separate content-addressed annex (ASCENT-A style). Starlink can carry large downloads when Priority bandwidth allows; ASCENT only carries the hash + metadata, not the multi-GB blob in-band.
Emit a PATHHINT unit on the turn ADU (before or after the greppable header). Receivers that do not implement 0xC5 must skip-by-length once they ship the reserved P2 skip rule; 2.1.0 codecs decode it natively.
0xC5 schema=0x01 len body
path_id, next_capacity (sender bottleneck bps, not RF PHY),
freeze_until (relative freeze_ms), confidence, ttl_ms,
optional obstruction, optional elev_deg, optional CRC
On fail: erase (do not apply). Stale TTL or unknown version: erase. Optional P9 wrap only for spool. See docs/SKYPULSE.md.
| Component | Responsibility |
|---|---|
tui |
Readline chat, mode banner, sacred-meter |
ascent_codec |
Existing ascent-wire / ref/ascent_codec.py |
ascent_d |
Optional P9 wrap (ref/ascent_d.py) |
transport |
HTTPS to xAI; offline queue to disk |
dish_probe |
Optional gRPC status (community tools) |
brain |
Cloud Grok client XOR local OpenAI-compatible |
queue |
SQLite or filesystem spool of ADUs |
[ASCENT] sim mode=CLOUD p0=1.00 api=ok rtt=48ms dish=ONLINE queue=0 pathhint bottleneck_hint=50.0Mbps freeze_until=15000ms conf=0.80
[ASCENT] sim mode=EDGE p0=1.00 api=DOWN dish=ONLINE queue=3 model=llama3.1:8b
[ASCENT] sim mode=QUEUE p0=1.00 api=ok dish=OBSTRUCTED queue=12 pathhint obst=0.40
Prefix is sim unless a real dish probe ran (obs). bottleneck_hint is predicted sender bottleneck, not a Starlink RF reading. This client does not invent a Starlink telemetry API. TCP :9200 is reachability only.
See examples/ascent_starlink_client/ in this repo:
daemon.py- mode machine + queue flush + SkyPulse PATHHINT metercodec_session.py- build/parse turn ADUs (PATHHINT prefix)brains.py- cloud vs edge adaptersdish_health.py- optional status stub + lab obstruction envREADME.md- run notes
| Cloud Grok | Local 7B-70B | |
|---|---|---|
| Capability | Frontier | Ops-useful, not same class |
| Needs | Path to api.x.ai + key |
VRAM/CPU + weights on disk |
| Fresh knowledge | Yes (with tools) | Only if pre-cached |
| Power | Low on PC | High if GPU |
| Honesty | Full product | Degraded agent |
| Concern | Design |
|---|---|
| Transport | TLS 1.3 / QUIC to api.x.ai only; pin if feasible |
| API auth | Bearer key in OS keyring / env; never in ASCENT P0 logs |
| P7 | Optional PQ envelopes for long offline spool encryption; kids OOB |
| THINK | Opaque on shared logs; redact |
| SAFETY | Untrusted tool results never promote to control |
| Dish gRPC | LAN-only diagnostics; not a trust boundary |
| Long offline | Pre-provision keys; rotate when online; spool ciphertext at rest |
| Adversary | Assume hostile Wi-Fi/LAN; encrypt spool; no cleartext API keys on disk |
| Legal | Stock kit; no firmware mods; export-compliant crypto |
ASCENT-D is integrity + fail-closed, not a substitute for TLS/BPSec.
| Scenario | Starlink | Cloud Grok | Edge agent |
|---|---|---|---|
| Home fiber cut | High value | Usually OK | Backup |
| Regional cell/fiber outage | High | Usually OK | Backup |
| Grid down, you have UPS | Med-High if sky | If DCs powered | Critical |
| All gateways/PoPs dead | RF maybe | No | Only path |
| Global terrestrial collapse | Not enough for Grok | Assumed dead | Only path |
| ID | Risk | Sev | Mitigation |
|---|---|---|---|
| R1 | Overclaim "Grok offline via Starlink" | High | Dual-mode UX; kill marketing fantasy |
| R2 | Dish power/sky | High | UPS + Mini option; duty cycle |
| R3 | API down while dish green | High | Edge fallback + probe |
| R4 | LEO reconfig jitter (~15s class) | Med | Queue, resume, ASCENT-D optional |
| R5 | ToS / RE dish firmware | High | Read-only diagnostics only |
| R6 | Export crypto / unauthorized RF | High | App-layer only; counsel if shipping PQ suite |
| R7 | Double FEC tax (D + LTP + TM) | Med | D alone off Starlink IP; E-LEO light CRC; full stack deep-space only |
| R8 | DTN scope creep for LEO IP | High | Phase 1 = pure IP |
| R9 | Local model mistaken for Grok liability | High | Banner "EDGE MODE" |
| R10 | Enterprise-only APIs assumed residential | Med | Feature-detect |
- Claims full Grok with zero terrestrial path and no evidence of space inference.
- Treats Starlink as compute.
- Requires Dishy reverse-engineering or custom RF.
- Equates 7B/70B with frontier Grok for high-stakes tasks.
- Uses ASCENT as a routing protocol instead of framing.
- No degrade path when API dies.
- No power budget.
- ASCENT-D BER/erase lab with artificial erasure (already partial in Wire Lab / tests).
- Starlink-like loss model: random datagram drop + 15s glitch windows.
- Golden agent turn encode/decode + queue replay.
- Exit: green tests; measured erase rate vs simulated BER.
- CLI/daemon: dual-mode cloud Grok + local Ollama.
- ASCENT framing for turns (P0 + P5).
- Failover WAN (fiber primary, Starlink secondary) optional at router.
- Dish status optional via community tools when a real dish exists. This repo does not invent a Starlink telemetry API.
- Store-and-forward spool when API/RTT bad.
- Exit: survive home ISP outage with cloud Grok still answering; survive API outage with edge mode.
- Optional BPv7 lab (uD3TN AAP or HDTN) carrying ASCENT ADUs for delayed peers.
- Stronger edge models; RAG over local continuity.
- Optional ASCENT-D on spool files.
- Exit: multi-hour delayed round-trip demo without lying about interactive Grok.
- Requires SpaceX and/or xAI cooperation, or mission hardware: contact plans, LTP, CCSDS coding, possible enterprise dual-home of inference.
- Lunar/Mars class delays: one ADU per RTT budget; no chatty tool loops.
- Exit: only with external partners or flight program - not a garage-only claim.
- ASCENT codec + agent frames on any IP path
- ASCENT-D encode/decode erase-on-fail in software
- Starlink as failover WAN for
api.x.ai - Local edge LLM when API unreachable
- App-level queue across link flaps
- SkyPulse PATHHINT encode/decode + fail-closed skip
- ASCENT-E-LEO vs D integrity helper (no double-FEC on Starlink IP)
- QUEUE on obstruction / RTT flap in the Phase 1 client
- Space-resident Grok inference
- Documented sat-only path that never touches public Internet but still reaches xAI
- Official residential dish developer control plane
- Mission-class BP/LTP over Starlink as a product
- Failover drill: cut fiber; confirm Grok chat via Starlink; log RTT and failures.
- API kill drill: block
api.x.ai; confirm EDGE banner + local answers. - Glitch inject: drop 1-5% UDP or reset TCP mid-stream; measure queue recovery.
- ASCENT-D spool: corrupt random bytes on disk; confirm erase, never bad TOOL.
- Power budget: measure Watts for Mini vs Standard + PC for 2h and 8h UPS.
- DTN lab only: one delayed ADU via uD3TN loopback; do not put production chat on BP yet.
| Topic | Confidence | Notes |
|---|---|---|
| ASCENT SPEC planes / P9 RS | High | Product normative |
| Starlink needs ground exit for public APIs | High | Architecture consensus + measurements |
| ISLs extend gateway reach | High | SpaceX marketing + RIPE-style studies |
| Dish :9200 gRPC community tools | High | sparky8512/starlink-grpc-tools |
| BPv7 / LTP standards | High | RFC 9171 / 5326 |
| ECLSA production packaging | Medium | Strong papers; verify fork |
| V3 / orbital AI timelines | Medium | Roadmap / early deploy |
| xAI dual-homed on Starlink for customers | Low / none public | Do not design on it |
| Role | Outcome used |
|---|---|
| ASCENT Protocol Specialist | SPEC plane map, stream examples, P9 fail policy |
| Starlink Systems Researcher | Path model, interfaces, DTC, V2/V3, critical egress truth |
| DTN Expert | A/C vs D stacking; FEC comparison; reject ASCENT-as-CLA |
| Terminal Designer | Mode machine, sacred-meter, Python skeleton |
| Security | TLS + P7 + SAFETY + spool encryption posture |
| Feasibility Critic | Kill criteria, scenario matrix, honesty bar |
| Architecture Synthesizer | This document + roadmap |
Critique loop applied: every "space Grok forever" claim was reduced to dual-mode resilience that works on stock hardware.
- Spec:
SPEC.md - SkyPulse:
docs/SKYPULSE.md - OrbitStack / LeoAware:
docs/ORBITSTACK-LEOAWARE-BRIDGE.md - Agent loop:
docs/AGENT-LOOP.md - Codec:
ref/ascent_codec.py,ref/ascent_d.py,ref/ascent_skypulse.py - Client skeleton:
examples/ascent_starlink_client/ - Skill:
~/.grok/skills/ascent-starlink-resilience/ - DTN stacking skill:
~/.grok/skills/ascent-dtn-space-stacking/ - Live lab: https://ascent.jonbailey.xyz/
- Public repo: https://github.com/Pitchfork-and-Torch/ascent