[{"data":1,"prerenderedAt":950},["ShallowReactive",2],{"search-all-posts":3,"search-sections-posts":512,"landing":549,"posts":580},[4],{"id":5,"title":6,"author":7,"body":8,"description":499,"extension":500,"meta":501,"navigation":502,"path":503,"published":504,"readtime":505,"seo":506,"stem":507,"tags":508,"updated":505,"__hash__":511},"posts/posts/hello-world.md","Hello World!","zoobzio",{"type":9,"value":10,"toc":485},"minimark",[11,23,31,36,39,52,57,101,105,153,157,253,257,293,297,345,349,409,413],[12,13,14,15,22],"p",{},"Welcome! This is where I will be updating my progress on ",[16,17,21],"a",{"href":18,"rel":19},"https://github.com/zoobz-io",[20],"nofollow","zoobz.io",", an ecosystem of composable Go libraries designed for constructing modern agentic applications.",[12,24,25,26,30],{},"As with all things in life, these libraries are a work in progress. Some are battle-tested and used in real applications and others are experiments that may be subject to change. ",[16,27,29],{"href":28},"/rss.xml","Keep an eye"," on my progress or open an issue on any repo to get involved!",[32,33,35],"h2",{"id":34},"projects","Projects",[12,37,38],{},"Here is a snapshot of what is available today.",[40,41,43],"prose-alert",{"variant":42},"note",[12,44,45,46,51],{},"\nThis article will not be kept up-to-date. Take a look ",[16,47,50],{"href":48,"rel":49},"https://github.com/zoobz-io/repositories",[20],"here"," for the latest.",[53,54,56],"h3",{"id":55},"configuration","Configuration",[58,59,60,73],"table",{},[61,62,63],"thead",{},[64,65,66,70],"tr",{},[67,68,69],"th",{},"Package",[67,71,72],{},"Description",[74,75,76,89],"tbody",{},[64,77,78,86],{},[79,80,81],"td",{},[16,82,85],{"href":83,"rel":84},"https://github.com/zoobz-io/fig",[20],"fig",[79,87,88],{},"Struct tags in, configuration out",[64,90,91,98],{},[79,92,93],{},[16,94,97],{"href":95,"rel":96},"https://github.com/zoobz-io/flux",[20],"flux",[79,99,100],{},"Reactive configuration synchronization for Go",[53,102,104],{"id":103},"events","Events",[58,106,107,115],{},[61,108,109],{},[64,110,111,113],{},[67,112,69],{},[67,114,72],{},[74,116,117,129,141],{},[64,118,119,126],{},[79,120,121],{},[16,122,125],{"href":123,"rel":124},"https://github.com/zoobz-io/capitan",[20],"capitan",[79,127,128],{},"Type-safe event coordination for Go with zero dependencies",[64,130,131,138],{},[79,132,133],{},[16,134,137],{"href":135,"rel":136},"https://github.com/zoobz-io/herald",[20],"herald",[79,139,140],{},"Bidirectional bindings between capitan events and message brokers",[64,142,143,150],{},[79,144,145],{},[16,146,149],{"href":147,"rel":148},"https://github.com/zoobz-io/aperture",[20],"aperture",[79,151,152],{},"Config-driven bridge from capitan events to OpenTelemetry signals",[53,154,156],{"id":155},"data-storage","Data & Storage",[58,158,159,167],{},[61,160,161],{},[64,162,163,165],{},[67,164,69],{},[67,166,72],{},[74,168,169,181,193,205,217,229,241],{},[64,170,171,178],{},[79,172,173],{},[16,174,177],{"href":175,"rel":176},"https://github.com/zoobz-io/dbml",[20],"dbml",[79,179,180],{},"A Go package for building and generating DBML programmatically",[64,182,183,190],{},[79,184,185],{},[16,186,189],{"href":187,"rel":188},"https://github.com/zoobz-io/astql",[20],"astql",[79,191,192],{},"Type-safe SQL query builder with DBML schema validation",[64,194,195,202],{},[79,196,197],{},[16,198,201],{"href":199,"rel":200},"https://github.com/zoobz-io/lucene",[20],"lucene",[79,203,204],{},"Type-safe search queries for Elasticsearch and OpenSearch",[64,206,207,214],{},[79,208,209],{},[16,210,213],{"href":211,"rel":212},"https://github.com/zoobz-io/vecna",[20],"vecna",[79,215,216],{},"Schema-validated filter builder for vector databases",[64,218,219,226],{},[79,220,221],{},[16,222,225],{"href":223,"rel":224},"https://github.com/zoobz-io/soy",[20],"soy",[79,227,228],{},"Type-safe SQL query builder for Go with schema validation",[64,230,231,238],{},[79,232,233],{},[16,234,237],{"href":235,"rel":236},"https://github.com/zoobz-io/edamame",[20],"edamame",[79,239,240],{},"Statement-driven query exec for Go",[64,242,243,250],{},[79,244,245],{},[16,246,249],{"href":247,"rel":248},"https://github.com/zoobz-io/grub",[20],"grub",[79,251,252],{},"Provider-agnostic storage for Go",[53,254,256],{"id":255},"pipelines","Pipelines",[58,258,259,267],{},[61,260,261],{},[64,262,263,265],{},[67,264,69],{},[67,266,72],{},[74,268,269,281],{},[64,270,271,278],{},[79,272,273],{},[16,274,277],{"href":275,"rel":276},"https://github.com/zoobz-io/pipz",[20],"pipz",[79,279,280],{},"Type-safe, composable data pipelines for Go",[64,282,283,290],{},[79,284,285],{},[16,286,289],{"href":287,"rel":288},"https://github.com/zoobz-io/flume",[20],"flume",[79,291,292],{},"A dynamic pipeline factory for pipz with hot-reloading capabilities",[53,294,296],{"id":295},"http","HTTP",[58,298,299,307],{},[61,300,301],{},[64,302,303,305],{},[67,304,69],{},[67,306,72],{},[74,308,309,321,333],{},[64,310,311,318],{},[79,312,313],{},[16,314,317],{"href":315,"rel":316},"https://github.com/zoobz-io/openapi",[20],"openapi",[79,319,320],{},"OpenAPI 3.1 specification as native Go types",[64,322,323,330],{},[79,324,325],{},[16,326,329],{"href":327,"rel":328},"https://github.com/zoobz-io/rocco",[20],"rocco",[79,331,332],{},"Type-safe HTTP framework for Go with automatic OpenAPI generation",[64,334,335,342],{},[79,336,337],{},[16,338,341],{"href":339,"rel":340},"https://github.com/zoobz-io/sctx",[20],"sctx",[79,343,344],{},"Certificate-based security contexts for Go",[53,346,348],{"id":347},"ai","AI",[58,350,351,359],{},[61,352,353],{},[64,354,355,357],{},[67,356,69],{},[67,358,72],{},[74,360,361,373,385,397],{},[64,362,363,370],{},[79,364,365],{},[16,366,369],{"href":367,"rel":368},"https://github.com/zoobz-io/zyn",[20],"zyn",[79,371,372],{},"Type-safe LLM orchestration for Go",[64,374,375,382],{},[79,376,377],{},[16,378,381],{"href":379,"rel":380},"https://github.com/zoobz-io/cogito",[20],"cogito",[79,383,384],{},"LLM-powered reasoning chains with semantic memory for Go",[64,386,387,394],{},[79,388,389],{},[16,390,393],{"href":391,"rel":392},"https://github.com/zoobz-io/chit",[20],"chit",[79,395,396],{},"Conversation lifecycle controller for LLM-powered applications",[64,398,399,406],{},[79,400,401],{},[16,402,405],{"href":403,"rel":404},"https://github.com/zoobz-io/vex",[20],"vex",[79,407,408],{},"Type-safe embedding vector generation for Go",[53,410,412],{"id":411},"tools","Tools",[58,414,415,423],{},[61,416,417],{},[64,418,419,421],{},[67,420,69],{},[67,422,72],{},[74,424,425,437,449,461,473],{},[64,426,427,434],{},[79,428,429],{},[16,430,433],{"href":431,"rel":432},"https://github.com/zoobz-io/sentinel",[20],"sentinel",[79,435,436],{},"Zero-dependency struct introspection for Go",[64,438,439,446],{},[79,440,441],{},[16,442,445],{"href":443,"rel":444},"https://github.com/zoobz-io/clockz",[20],"clockz",[79,447,448],{},"Type-safe clock abstractions for Go with zero dependencies",[64,450,451,458],{},[79,452,453],{},[16,454,457],{"href":455,"rel":456},"https://github.com/zoobz-io/slush",[20],"slush",[79,459,460],{},"Type-safe guarded service locator for Go",[64,462,463,470],{},[79,464,465],{},[16,466,469],{"href":467,"rel":468},"https://github.com/zoobz-io/cereal",[20],"cereal",[79,471,472],{},"Boundary-aware serialization for Go",[64,474,475,482],{},[79,476,477],{},[16,478,481],{"href":479,"rel":480},"https://github.com/zoobz-io/check",[20],"check",[79,483,484],{},"Fluent validation for Go with struct tag verification",{"title":486,"searchDepth":487,"depth":487,"links":488},"",2,[489],{"id":34,"depth":487,"text":35,"children":490},[491,493,494,495,496,497,498],{"id":55,"depth":492,"text":56},3,{"id":103,"depth":492,"text":104},{"id":155,"depth":492,"text":156},{"id":255,"depth":492,"text":256},{"id":295,"depth":492,"text":296},{"id":347,"depth":492,"text":348},{"id":411,"depth":492,"text":412},"A brief introduction to zoobz.io","md",{},true,"/posts/hello-world","2026-04-17",null,{"title":6,"description":499},"posts/hello-world",[509,510],"meta","announcements","a6FFYMTlcX3hihIC5TFKdQ6xM5MSrqz3TtrS_lx3Ft0",[513,517,521,525,529,533,537,541,545],{"id":503,"title":6,"titles":514,"content":515,"level":516},[],"A brief introduction to zoobz.io Welcome! This is where I will be updating my progress on zoobz.io, an ecosystem of composable Go libraries designed for constructing modern agentic applications. As with all things in life, these libraries are a work in progress. Some are battle-tested and used in real applications and others are experiments that may be subject to change. Keep an eye on my progress or open an issue on any repo to get involved!",1,{"id":518,"title":35,"titles":519,"content":520,"level":487},"/posts/hello-world#projects",[6],"Here is a snapshot of what is available today. This article will not be kept up-to-date. Take a look here for the latest.",{"id":522,"title":56,"titles":523,"content":524,"level":492},"/posts/hello-world#configuration",[6,35],"PackageDescriptionfigStruct tags in, configuration outfluxReactive configuration synchronization for Go",{"id":526,"title":104,"titles":527,"content":528,"level":492},"/posts/hello-world#events",[6,35],"PackageDescriptioncapitanType-safe event coordination for Go with zero dependenciesheraldBidirectional bindings between capitan events and message brokersapertureConfig-driven bridge from capitan events to OpenTelemetry signals",{"id":530,"title":156,"titles":531,"content":532,"level":492},"/posts/hello-world#data-storage",[6,35],"PackageDescriptiondbmlA Go package for building and generating DBML programmaticallyastqlType-safe SQL query builder with DBML schema validationluceneType-safe search queries for Elasticsearch and OpenSearchvecnaSchema-validated filter builder for vector databasessoyType-safe SQL query builder for Go with schema validationedamameStatement-driven query exec for GogrubProvider-agnostic storage for Go",{"id":534,"title":256,"titles":535,"content":536,"level":492},"/posts/hello-world#pipelines",[6,35],"PackageDescriptionpipzType-safe, composable data pipelines for GoflumeA dynamic pipeline factory for pipz with hot-reloading capabilities",{"id":538,"title":296,"titles":539,"content":540,"level":492},"/posts/hello-world#http",[6,35],"PackageDescriptionopenapiOpenAPI 3.1 specification as native Go typesroccoType-safe HTTP framework for Go with automatic OpenAPI generationsctxCertificate-based security contexts for Go",{"id":542,"title":348,"titles":543,"content":544,"level":492},"/posts/hello-world#ai",[6,35],"PackageDescriptionzynType-safe LLM orchestration for GocogitoLLM-powered reasoning chains with semantic memory for GochitConversation lifecycle controller for LLM-powered applicationsvexType-safe embedding vector generation for Go",{"id":546,"title":412,"titles":547,"content":548,"level":492},"/posts/hello-world#tools",[6,35],"PackageDescriptionsentinelZero-dependency struct introspection for GoclockzType-safe clock abstractions for Go with zero dependenciesslushType-safe guarded service locator for GocerealBoundary-aware serialization for GocheckFluent validation for Go with struct tag verification",{"id":550,"title":551,"body":552,"description":561,"extension":500,"meta":575,"navigation":502,"path":576,"seo":577,"stem":578,"__hash__":579},"landing/landing.md","Blog",{"type":9,"value":553,"toc":573},[554,559,562,570],[555,556,558],"h1",{"id":557},"hey-im-alex","👋 Hey! I'm Alex.",[12,560,561],{},"I try to write code that is simple to reason about, easy to maintain, and more powerful than the sum of it's parts.",[12,563,564,565,569],{},"I am currently working on ",[16,566,568],{"href":18,"rel":567},[20],"zoobz-io",", a collection of composable libraries in Go designed for constructing modern agentic applications.",[12,571,572],{},"The idea is simple: small primitives with clear, generic contracts that snap together without friction. Each library does one thing well and stays out of your way.",{"title":486,"searchDepth":487,"depth":487,"links":574},[],{},"/landing",{"title":551,"description":561},"landing","3gVzNXqFIf-R72dIM8nYe7rfFzoUpfJe_ebqC4d2yPk",[581],{"id":5,"title":6,"author":7,"body":582,"description":499,"extension":500,"meta":947,"navigation":502,"path":503,"published":504,"readtime":505,"seo":948,"stem":507,"tags":949,"updated":505,"__hash__":511},{"type":9,"value":583,"toc":936},[584,589,593,595,597,604,606,636,638,677,679,754,756,786,788,827,829,877,879],[12,585,14,586,22],{},[16,587,21],{"href":18,"rel":588},[20],[12,590,25,591,30],{},[16,592,29],{"href":28},[32,594,35],{"id":34},[12,596,38],{},[40,598,599],{"variant":42},[12,600,45,601,51],{},[16,602,50],{"href":48,"rel":603},[20],[53,605,56],{"id":55},[58,607,608,616],{},[61,609,610],{},[64,611,612,614],{},[67,613,69],{},[67,615,72],{},[74,617,618,627],{},[64,619,620,625],{},[79,621,622],{},[16,623,85],{"href":83,"rel":624},[20],[79,626,88],{},[64,628,629,634],{},[79,630,631],{},[16,632,97],{"href":95,"rel":633},[20],[79,635,100],{},[53,637,104],{"id":103},[58,639,640,648],{},[61,641,642],{},[64,643,644,646],{},[67,645,69],{},[67,647,72],{},[74,649,650,659,668],{},[64,651,652,657],{},[79,653,654],{},[16,655,125],{"href":123,"rel":656},[20],[79,658,128],{},[64,660,661,666],{},[79,662,663],{},[16,664,137],{"href":135,"rel":665},[20],[79,667,140],{},[64,669,670,675],{},[79,671,672],{},[16,673,149],{"href":147,"rel":674},[20],[79,676,152],{},[53,678,156],{"id":155},[58,680,681,689],{},[61,682,683],{},[64,684,685,687],{},[67,686,69],{},[67,688,72],{},[74,690,691,700,709,718,727,736,745],{},[64,692,693,698],{},[79,694,695],{},[16,696,177],{"href":175,"rel":697},[20],[79,699,180],{},[64,701,702,707],{},[79,703,704],{},[16,705,189],{"href":187,"rel":706},[20],[79,708,192],{},[64,710,711,716],{},[79,712,713],{},[16,714,201],{"href":199,"rel":715},[20],[79,717,204],{},[64,719,720,725],{},[79,721,722],{},[16,723,213],{"href":211,"rel":724},[20],[79,726,216],{},[64,728,729,734],{},[79,730,731],{},[16,732,225],{"href":223,"rel":733},[20],[79,735,228],{},[64,737,738,743],{},[79,739,740],{},[16,741,237],{"href":235,"rel":742},[20],[79,744,240],{},[64,746,747,752],{},[79,748,749],{},[16,750,249],{"href":247,"rel":751},[20],[79,753,252],{},[53,755,256],{"id":255},[58,757,758,766],{},[61,759,760],{},[64,761,762,764],{},[67,763,69],{},[67,765,72],{},[74,767,768,777],{},[64,769,770,775],{},[79,771,772],{},[16,773,277],{"href":275,"rel":774},[20],[79,776,280],{},[64,778,779,784],{},[79,780,781],{},[16,782,289],{"href":287,"rel":783},[20],[79,785,292],{},[53,787,296],{"id":295},[58,789,790,798],{},[61,791,792],{},[64,793,794,796],{},[67,795,69],{},[67,797,72],{},[74,799,800,809,818],{},[64,801,802,807],{},[79,803,804],{},[16,805,317],{"href":315,"rel":806},[20],[79,808,320],{},[64,810,811,816],{},[79,812,813],{},[16,814,329],{"href":327,"rel":815},[20],[79,817,332],{},[64,819,820,825],{},[79,821,822],{},[16,823,341],{"href":339,"rel":824},[20],[79,826,344],{},[53,828,348],{"id":347},[58,830,831,839],{},[61,832,833],{},[64,834,835,837],{},[67,836,69],{},[67,838,72],{},[74,840,841,850,859,868],{},[64,842,843,848],{},[79,844,845],{},[16,846,369],{"href":367,"rel":847},[20],[79,849,372],{},[64,851,852,857],{},[79,853,854],{},[16,855,381],{"href":379,"rel":856},[20],[79,858,384],{},[64,860,861,866],{},[79,862,863],{},[16,864,393],{"href":391,"rel":865},[20],[79,867,396],{},[64,869,870,875],{},[79,871,872],{},[16,873,405],{"href":403,"rel":874},[20],[79,876,408],{},[53,878,412],{"id":411},[58,880,881,889],{},[61,882,883],{},[64,884,885,887],{},[67,886,69],{},[67,888,72],{},[74,890,891,900,909,918,927],{},[64,892,893,898],{},[79,894,895],{},[16,896,433],{"href":431,"rel":897},[20],[79,899,436],{},[64,901,902,907],{},[79,903,904],{},[16,905,445],{"href":443,"rel":906},[20],[79,908,448],{},[64,910,911,916],{},[79,912,913],{},[16,914,457],{"href":455,"rel":915},[20],[79,917,460],{},[64,919,920,925],{},[79,921,922],{},[16,923,469],{"href":467,"rel":924},[20],[79,926,472],{},[64,928,929,934],{},[79,930,931],{},[16,932,481],{"href":479,"rel":933},[20],[79,935,484],{},{"title":486,"searchDepth":487,"depth":487,"links":937},[938],{"id":34,"depth":487,"text":35,"children":939},[940,941,942,943,944,945,946],{"id":55,"depth":492,"text":56},{"id":103,"depth":492,"text":104},{"id":155,"depth":492,"text":156},{"id":255,"depth":492,"text":256},{"id":295,"depth":492,"text":296},{"id":347,"depth":492,"text":348},{"id":411,"depth":492,"text":412},{},{"title":6,"description":499},[509,510],1776451252841]