[{"data":1,"prerenderedAt":298},["ShallowReactive",2],{"navigation_docs":3,"-architecture-overview":92,"-architecture-overview-surround-resolved":290,"daily-note-surround--architecture-overview":95},[4,9,35,66,82,87],{"title":5,"path":6,"stem":5,"icon":7,"order":8},"Home","/home","i-lucide-home",0,{"title":10,"icon":11,"order":12,"path":13,"stem":14,"children":15,"page":34},"Guide","i-lucide-book-open",1,"/guide","1.guide",[16,22,28],{"title":17,"path":18,"stem":19,"icon":20,"order":21},"Installation","/guide/installation","1.guide/1.installation","i-lucide-download",10,{"title":23,"path":24,"stem":25,"icon":26,"order":27},"Usage","/guide/usage","1.guide/2.usage","i-lucide-layers",20,{"title":29,"path":30,"stem":31,"icon":32,"order":33},"Configuration","/guide/configuration","1.guide/3.configuration","i-lucide-settings",30,false,{"title":36,"icon":26,"order":37,"path":38,"stem":39,"children":40,"page":34},"Architecture",2,"/architecture","2.architecture",[41,45,50,55,61],{"title":42,"path":43,"stem":44,"icon":26,"order":21},"Overview","/architecture/overview","2.architecture/1.overview",{"title":46,"path":47,"stem":48,"icon":49,"order":27},"Ghostty","/architecture/ghostty","2.architecture/2.ghostty","i-lucide-terminal",{"title":51,"path":52,"stem":53,"icon":54,"order":33},"Sessions","/architecture/sessions","2.architecture/3.sessions","i-lucide-layout-grid",{"title":56,"path":57,"stem":58,"icon":59,"order":60},"Shell Integration","/architecture/shell-integration","2.architecture/4.shell-integration","i-lucide-plug",40,{"title":62,"path":63,"stem":64,"icon":54,"order":65},"Widget","/architecture/widget","2.architecture/5.widget",50,{"title":67,"icon":68,"order":69,"path":70,"stem":71,"children":72,"page":34},"Development","i-lucide-wrench",3,"/development","3.development",[73,77],{"title":74,"path":75,"stem":76,"icon":68,"order":21},"Building","/development/building","3.development/1.building",{"title":78,"path":79,"stem":80,"icon":81,"order":27},"Distribution","/development/distribution","3.development/2.distribution","i-lucide-package",{"title":83,"path":84,"stem":83,"icon":85,"order":86},"Changelog","/changelog","i-lucide-history",98,{"title":88,"path":89,"stem":88,"icon":90,"order":91},"About","/about","i-lucide-info",99,{"id":93,"title":94,"aliases":95,"body":96,"concluded":95,"date":95,"description":284,"documentation":95,"extension":285,"isBase":34,"links":95,"meta":286,"mtime":95,"navigation":287,"order":21,"outcome":95,"path":43,"project":95,"repository":95,"seo":288,"started":95,"status":95,"stem":44,"tags":95,"team":95,"type":95,"__hash__":289},"docs/2.architecture/1.overview.md","Architecture Overview",null,{"type":97,"value":98,"toc":279},"minimark",[99,103,159,164,251,255,265,269],[100,101,102],"p",{},"Kytos is layered across three components:",[104,105,106,122],"table",{},[107,108,109],"thead",{},[110,111,112,116,119],"tr",{},[113,114,115],"th",{},"Layer",[113,117,118],{},"Component",[113,120,121],{},"Responsibility",[123,124,125,137,148],"tbody",{},[110,126,127,131,134],{},[128,129,130],"td",{},"Terminal engine",[128,132,133],{},"libghostty",[128,135,136],{},"Emulation, Metal rendering, PTY, splits",[110,138,139,142,145],{},[128,140,141],{},"Shell chrome",[128,143,144],{},"KelyphosKit",[128,146,147],{},"Navigator, inspector, utility, NSToolbar",[110,149,150,153,156],{},[128,151,152],{},"Application",[128,154,155],{},"Kytos Swift sources",[128,157,158],{},"Bridge, session model, persistence, widget",[160,161,163],"h2",{"id":162},"key-types","Key Types",[104,165,166,176],{},[107,167,168],{},[110,169,170,173],{},[113,171,172],{},"Type",[113,174,175],{},"Role",[123,177,178,195,212,228,241],{},[110,179,180,186],{},[128,181,182],{},[183,184,185],"code",{},"KytosGhosttyApp",[128,187,188,191,192],{},[183,189,190],{},"@Observable @MainActor"," singleton wrapping ",[183,193,194],{},"ghostty_app_t",[110,196,197,202],{},[128,198,199],{},[183,200,201],{},"KytosGhosttyView",[128,203,204,207,208,211],{},[183,205,206],{},"NSView"," wrapping ",[183,209,210],{},"ghostty_surface_t"," — Metal layer, keyboard/mouse, IME",[110,213,214,219],{},[128,215,216],{},[183,217,218],{},"KytosTerminalRepresentable",[128,220,221,224,225,227],{},[183,222,223],{},"NSViewRepresentable"," bridging ",[183,226,201],{}," into SwiftUI",[110,229,230,235],{},[128,231,232],{},[183,233,234],{},"KytosWorkspace",[128,236,237,240],{},[183,238,239],{},"@Observable"," split tree model for one window/tab",[110,242,243,248],{},[128,244,245],{},[183,246,247],{},"KytosAppModel",[128,249,250],{},"Window-to-workspace mapping, persistence, widget snapshots",[160,252,254],{"id":253},"process-model","Process Model",[100,256,257,258,261,262,264],{},"Kytos runs as a single process. libghostty is linked as a static library (",[183,259,260],{},"GhosttyKit.xcframework","). All terminal rendering happens on the Metal layer managed by ",[183,263,201],{},". The Swift UI layer runs on the main actor.",[160,266,268],{"id":267},"data-flow","Data Flow",[270,271,276],"pre",{"className":272,"code":274,"language":275},[273],"language-text","Ghostty C callbacks → KytosGhosttyApp → KytosWorkspace → SwiftUI\nOSC escape sequences → KytosGhosttyView → toolbar title/subtitle\nshell integration scripts → PTY → KytosGhosttyView → navigator labels\nwidget snapshot → KytosAppModel → JSON file → KytosWidget\n","text",[183,277,274],{"__ignoreMap":278},"",{"title":278,"searchDepth":69,"depth":69,"links":280},[281,282,283],{"id":162,"depth":37,"text":163},{"id":253,"depth":37,"text":254},{"id":267,"depth":37,"text":268},"How Kytos layers libghostty, KelyphosKit, and Swift","md",{"icon":26},{"title":42,"icon":26,"order":21},{"title":94,"description":284},"zh1qKijkMlmPA9QZnjKYCGTs2OJqJtNU2773WWDLdz4",[291,294],{"title":29,"description":292,"path":30,"navigation":293},"Terminal and application configuration",{"title":29,"icon":32,"order":33},{"title":295,"description":296,"path":47,"navigation":297},"Ghostty Integration","How libghostty is embedded and driven",{"title":46,"icon":49,"order":27},1774809102984]