[{"data":1,"prerenderedAt":559},["ShallowReactive",2],{"content-query-NVxXJIME73":3,"content-navigation-8C37fagqQL":358},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"heading":10,"abstract":11,"year":12,"tags":13,"schemaOrg":17,"body":74,"_type":328,"_id":329,"_source":330,"_file":331,"_stem":332,"_extension":333,"head":334},"/projects/swiss-ai-hub","projects",false,"","Swiss AI Hub: Sovereign, open-source AI infrastructure for Switzerland","The open-source (Apache 2.0) AI platform I architected and lead-developed at bbv: a complete production stack — LLM gateway, vector search, agents, data pipelines, auth, and observability — that deploys air-gapped on a single GPU in under five minutes.","Swiss AI Hub","Architected and lead-developed the Swiss AI Hub, an enterprise AI platform now released as open-source under Apache 2.0. ~35 integrated containers — LLM gateway, vector search, multi-agent runtime, data pipelines, SSO, and full observability — deploy with one command, run air-gapped on a single GPU, and ship across 15 projects for 12 Swiss enterprise clients.","2026",[14,15,16],"On Github","Open Source","Enterprise AI",[18,49],{"@context":19,"@type":20,"name":10,"headline":8,"description":21,"datePublished":22,"dateModified":23,"author":24,"publisher":34,"codeRepository":38,"url":39,"programmingLanguage":40,"runtimePlatform":43,"license":44,"operatingSystem":45,"applicationCategory":46,"keywords":47,"inLanguage":48},"https://schema.org","SoftwareSourceCode","Open-source (Apache 2.0) enterprise AI platform combining best-of-breed open-source tools into a complete, self-hosted production stack: LLM gateway, vector search, multi-agent runtime, data pipelines, authentication, and observability.","2026-06-01","2026-06-29",{"@type":25,"givenName":26,"familyName":27,"name":28,"jobTitle":29,"url":30,"sameAs":31},"Person","Joel","Barmettler","Joel Barmettler","Architect and Lead Developer, Swiss AI Hub","https://joelbarmettler.xyz",[32,33],"https://www.linkedin.com/in/joel-barmettler-b9ab361b7","https://github.com/joelbarmettlerUZH",{"@type":35,"name":36,"url":37},"Organization","bbv Software Services AG","https://bbv.ch/","https://github.com/bbvch-ai/aihub-core","https://dev.ai-hub.bbv.ch",[41,42],"Python","TypeScript","Docker","https://www.apache.org/licenses/LICENSE-2.0","Linux","DeveloperApplication","AI infrastructure, data sovereignty, Swiss AI, LLM gateway, LiteLLM, vLLM, Milvus, LlamaIndex, Keycloak, agents, RAG, open source, Apache 2.0, on-premise, air-gapped","en",{"@context":19,"@type":50,"mainEntity":51},"FAQPage",[52,58,62,66,70],{"@type":53,"name":54,"acceptedAnswer":55},"Question","What is the Swiss AI Hub?",{"@type":56,"text":57},"Answer","The Swiss AI Hub is a complete, self-hosted AI infrastructure platform: an LLM gateway, vector search, a multi-agent runtime, data pipelines, authentication, monitoring, and a chat interface, combined into one stack of around 35 containers. Organizations deploy and own the whole thing rather than subscribing to a SaaS or stitching together a code library. It runs on-premise, in a Swiss data center, or in any cloud, with no vendor lock-in.",{"@type":53,"name":59,"acceptedAnswer":60},"Is the Swiss AI Hub open source?",{"@type":56,"text":61},"Yes. As of 2026 the entire platform is open-source under the Apache 2.0 license. The code lives at github.com/bbvch-ai/aihub-core, the documentation at docs.ai-hub.bbv.ch, and a live overview at dev.ai-hub.bbv.ch. Any organization can deploy, inspect, and extend it without a licensing fee, and contribute back through an open pull-request process.",{"@type":53,"name":63,"acceptedAnswer":64},"What was Joel Barmettler's role on the Swiss AI Hub?",{"@type":56,"text":65},"Joel Barmettler is the architect and lead developer of the Swiss AI Hub. He designed the event-driven microservices architecture, led a team of five engineers, built the model-serving stack and the three SDKs (Agent, Pipeline, Process), defined the Swiss AI Agent Protocol, and in 2026 led the platform's release as open-source under Apache 2.0.",{"@type":53,"name":67,"acceptedAnswer":68},"What hardware does the Swiss AI Hub need?",{"@type":56,"text":69},"The full stack — chat, embeddings, reranking, OCR, and speech — runs air-gapped on a single NVIDIA RTX 6000 Pro, with no external API dependency. It can also route to a Swiss LLM Cloud or scale across multiple GPUs without code changes.",{"@type":53,"name":71,"acceptedAnswer":72},"How is the Swiss AI Hub deployed?",{"@type":56,"text":73},"One command installs everything via Docker Compose: LLM gateway, vector search, chat interface, authentication, and monitoring. A production deployment is up in under five minutes, with pre-built agents working immediately and no cloud provisioning required.",{"type":75,"children":76,"toc":322},"root",[77,85,127,134,139,185,191,196,242,254,260,272,288,302,316],{"type":78,"tag":79,"props":80,"children":82},"element","h1",{"id":81},"swiss-ai-hub-sovereign-open-source-ai-infrastructure-for-switzerland",[83],{"type":84,"value":8},"text",{"type":78,"tag":86,"props":87,"children":88},"p",{},[89,91,99,101,107,109,116,118,125],{"type":84,"value":90},"Every serious AI team in Switzerland rebuilds the same stack — LLM gateway, vector search, agents, auth, monitoring, a data pipeline — under one hard constraint: the data cannot leave the building, so the convenient SaaS options are off the table. The Swiss AI Hub is the platform I architected and lead-developed at ",{"type":78,"tag":92,"props":93,"children":96},"a",{"href":37,"rel":94},[95],"nofollow",[97],{"type":84,"value":98},"bbv",{"type":84,"value":100}," to end that repetition. It is complete, self-hosted infrastructure for production AI — around 35 integrated containers behind one install command — and as of 2026 it is ",{"type":78,"tag":92,"props":102,"children":104},{"href":38,"rel":103},[95],[105],{"type":84,"value":106},"open-source under Apache 2.0",{"type":84,"value":108},", public at ",{"type":78,"tag":92,"props":110,"children":113},{"href":111,"rel":112},"https://dev.ai-hub.bbv.ch/",[95],[114],{"type":84,"value":115},"dev.ai-hub.bbv.ch",{"type":84,"value":117}," and ",{"type":78,"tag":92,"props":119,"children":122},{"href":120,"rel":121},"https://docs.ai-hub.bbv.ch/",[95],[123],{"type":84,"value":124},"docs.ai-hub.bbv.ch",{"type":84,"value":126},".",{"type":78,"tag":128,"props":129,"children":131},"h2",{"id":130},"whats-in-the-box",[132],{"type":84,"value":133},"What's in the box",{"type":78,"tag":86,"props":135,"children":136},{},[137],{"type":84,"value":138},"The Hub wires best-of-breed open-source tools into one coherent stack and owns the integration between them:",{"type":78,"tag":140,"props":141,"children":142},"ul",{},[143,155,165,175],{"type":78,"tag":144,"props":145,"children":146},"li",{},[147,153],{"type":78,"tag":148,"props":149,"children":150},"strong",{},[151],{"type":84,"value":152},"LLM gateway and inference",{"type":84,"value":154}," — LiteLLM serves an OpenAI-compatible API with per-user cost tracking, running quantized open-weight models (Gemma, Qwen) through vLLM and llama.cpp or routing to a Swiss LLM Cloud. The whole platform fits air-gapped on a single NVIDIA RTX 6000 Pro.",{"type":78,"tag":144,"props":156,"children":157},{},[158,163],{"type":78,"tag":148,"props":159,"children":160},{},[161],{"type":84,"value":162},"Vector search and data",{"type":84,"value":164}," — Milvus and LlamaIndex handle RAG; Dagster pipelines ingest from 70+ storage providers via Rclone, with OCR through MinerU and full lineage to the vector store.",{"type":78,"tag":144,"props":166,"children":167},{},[168,173],{"type":78,"tag":148,"props":169,"children":170},{},[171],{"type":84,"value":172},"Security and sovereignty",{"type":84,"value":174}," — Keycloak SSO and multi-tenancy, Presidio PII anonymization, Traefik TLS. Nothing leaves the customer's infrastructure.",{"type":78,"tag":144,"props":176,"children":177},{},[178,183],{"type":78,"tag":148,"props":179,"children":180},{},[181],{"type":84,"value":182},"Memory and observability",{"type":84,"value":184}," — Neo4j and Mem0 back cross-session memory; Langfuse and OpenTelemetry trace every agent decision and its cost.",{"type":78,"tag":128,"props":186,"children":188},{"id":187},"how-it-works",[189],{"type":84,"value":190},"How it works",{"type":78,"tag":86,"props":192,"children":193},{},[194],{"type":84,"value":195},"One command brings the whole stack up via Docker Compose:",{"type":78,"tag":197,"props":198,"children":202},"pre",{"className":199,"code":200,"language":201,"meta":7,"style":7},"language-bash shiki shiki-themes github-dark","curl -fsSL https://raw.githubusercontent.com/bbvch-ai/aihub-core/main/install.sh | bash\n","bash",[203],{"type":78,"tag":204,"props":205,"children":206},"code",{"__ignoreMap":7},[207],{"type":78,"tag":208,"props":209,"children":212},"span",{"class":210,"line":211},"line",1,[213,219,225,231,237],{"type":78,"tag":208,"props":214,"children":216},{"style":215},"--shiki-default:#B392F0",[217],{"type":84,"value":218},"curl",{"type":78,"tag":208,"props":220,"children":222},{"style":221},"--shiki-default:#79B8FF",[223],{"type":84,"value":224}," -fsSL",{"type":78,"tag":208,"props":226,"children":228},{"style":227},"--shiki-default:#9ECBFF",[229],{"type":84,"value":230}," https://raw.githubusercontent.com/bbvch-ai/aihub-core/main/install.sh",{"type":78,"tag":208,"props":232,"children":234},{"style":233},"--shiki-default:#F97583",[235],{"type":84,"value":236}," |",{"type":78,"tag":208,"props":238,"children":239},{"style":215},[240],{"type":84,"value":241}," bash\n",{"type":78,"tag":86,"props":243,"children":244},{},[245,247,252],{"type":84,"value":246},"Under five minutes later there is a running gateway, vector search, chat UI, auth, and monitoring, with eight pre-built agent types working immediately over an OpenAI-compatible REST API, WebSocket, MCP, and Slack/Teams. On top sits the ",{"type":78,"tag":148,"props":248,"children":249},{},[250],{"type":84,"value":251},"Swiss AI Agent Protocol",{"type":84,"value":253}," — typed event workflows over NATS/JetStream with human-in-the-loop escalation — and three SDKs (Agent, Pipeline, Process) so developers inherit auth, tracing, streaming UI, and cost tracking for free.",{"type":78,"tag":128,"props":255,"children":257},{"id":256},"my-role",[258],{"type":84,"value":259},"My role",{"type":78,"tag":86,"props":261,"children":262},{},[263,265,270],{"type":84,"value":264},"I am the ",{"type":78,"tag":148,"props":266,"children":267},{},[268],{"type":84,"value":269},"architect and lead developer",{"type":84,"value":271}," of the Swiss AI Hub. I designed the event-driven microservices architecture, led a team of five engineers, built the model-serving stack, defined the agent protocol and SDKs, and drove the strategy that turned it into a revenue-generating business area shipping across 15 projects for 12 Swiss enterprise clients. In 2026 I led its release as open-source under Apache 2.0.",{"type":78,"tag":86,"props":273,"children":274},{},[275,280,282],{"type":78,"tag":148,"props":276,"children":277},{},[278],{"type":84,"value":279},"Repository:",{"type":84,"value":281}," ",{"type":78,"tag":92,"props":283,"children":285},{"href":38,"rel":284},[95],[286],{"type":84,"value":287},"github.com/bbvch-ai/aihub-core",{"type":78,"tag":86,"props":289,"children":290},{},[291,296,297],{"type":78,"tag":148,"props":292,"children":293},{},[294],{"type":84,"value":295},"Documentation:",{"type":84,"value":281},{"type":78,"tag":92,"props":298,"children":300},{"href":120,"rel":299},[95],[301],{"type":84,"value":124},{"type":78,"tag":86,"props":303,"children":304},{},[305,310,311],{"type":78,"tag":148,"props":306,"children":307},{},[308],{"type":84,"value":309},"Overview:",{"type":84,"value":281},{"type":78,"tag":92,"props":312,"children":314},{"href":111,"rel":313},[95],[315],{"type":84,"value":115},{"type":78,"tag":317,"props":318,"children":319},"style",{},[320],{"type":84,"value":321},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":7,"searchDepth":323,"depth":323,"links":324},2,[325,326,327],{"id":130,"depth":323,"text":133},{"id":187,"depth":323,"text":190},{"id":256,"depth":323,"text":259},"markdown","content:3.projects:0.swiss-ai-hub.md","content","3.projects/0.swiss-ai-hub.md","3.projects/0.swiss-ai-hub","md",{"script":335},[336],{"type":337,"key":338,"nodes":339,"data-nuxt-schema-org":357},"application/ld+json","schema-org-graph",[340,345],{"@context":19,"@type":20,"name":10,"headline":8,"description":21,"datePublished":22,"dateModified":23,"author":341,"publisher":343,"codeRepository":38,"url":39,"programmingLanguage":344,"runtimePlatform":43,"license":44,"operatingSystem":45,"applicationCategory":46,"keywords":47,"inLanguage":48},{"@type":25,"givenName":26,"familyName":27,"name":28,"jobTitle":29,"url":30,"sameAs":342},[32,33],{"@type":35,"name":36,"url":37},[41,42],{"@context":19,"@type":50,"mainEntity":346},[347,349,351,353,355],{"@type":53,"name":54,"acceptedAnswer":348},{"@type":56,"text":57},{"@type":53,"name":59,"acceptedAnswer":350},{"@type":56,"text":61},{"@type":53,"name":63,"acceptedAnswer":352},{"@type":56,"text":65},{"@type":53,"name":67,"acceptedAnswer":354},{"@type":56,"text":69},{"@type":53,"name":71,"acceptedAnswer":356},{"@type":56,"text":73},true,[359,373,389,405,425,510],{"title":360,"_path":361,"children":362,"icon":372},"About","/about",[363,366,369],{"title":364,"_path":365},"Joel Barmettler - AI Engineer, Researcher, and Entrepreneur","/about/about-me",{"title":367,"_path":368},"What Drives Me - Research Focus and Philosophy on AI Systems","/about/what-drives-me",{"title":370,"_path":371},"Technical Skills and Expertise - AI, ML, Infrastructure, and Web Development","/about/skills","📁",{"title":374,"_path":375,"children":376,"icon":372},"Career","/career",[377,380,383,386],{"title":378,"_path":379},"Building the AI Business Area at bbv Software Services","/career/bbv",{"title":381,"_path":382},"PolygonSoftware: Building a tech company during university","/career/polygon-software",{"title":384,"_path":385},"Machine learning for semiconductor quality control at BESI","/career/besi",{"title":387,"_path":388},"Data engineering for cryptocurrency analytics at CoinPaper","/career/coinpaper",{"title":390,"_path":391,"children":392,"icon":372},"Research","/research",[393,396,399,402],{"title":394,"_path":395},"The Invisible Coalition Partner: How LLMs Vote When Democracy Gets Concrete","/research/invisible-coalition-partner",{"title":397,"_path":398},"ConceptFormer: Graph-native grounding of LLMs via latent concept injection","/research/masters-thesis",{"title":400,"_path":401},"Airspace auction simulator for urban drone traffic","/research/masters-project",{"title":403,"_path":404},"Physical sky rendering engine for appleseed","/research/bachelors-thesis",{"title":406,"_path":407,"children":408,"icon":372},"Projects","/projects",[409,410,413,416,419,422],{"title":8,"_path":4},{"title":411,"_path":412},"gheim: An open Swiss-language PII dataset and NER model","/projects/gheim",{"title":414,"_path":415},"md-reheader: Restoring heading hierarchy in PDF-extracted markdown","/projects/md-reheader",{"title":417,"_path":418},"ultrainit.sh: One command to configure Claude Code for any codebase","/projects/ultrainit",{"title":420,"_path":421},"Slidev MCP: AI-powered presentation generation with shareable links","/projects/slidev-mcp",{"title":423,"_path":424},"Vue Docs MCP: Live Vue ecosystem documentation for AI assistants","/projects/vue-mcp",{"title":426,"_path":427,"children":428,"icon":372},"Podcast","/podcast",[429,432,435,438,441,444,447,450,453,456,459,462,465,468,471,474,477,480,483,486,489,492,495,498,501,504,507],{"title":430,"_path":431},"Measuring political bias in language models: systematic analysis using Swiss Smart Vote data","/podcast/political-bias-in-language-models",{"title":433,"_path":434},"DeepSeek R1: pure reinforcement learning for reasoning and why distillation changes everything","/podcast/deepseek-r1-reasoning",{"title":436,"_path":437},"DeepSeek V3: how mixture-of-experts and multi-token prediction enable $5.5M training runs","/podcast/deepseek-v3-architecture",{"title":439,"_path":440},"SRF Arena part 3: international regulation, student perspectives, and why the debate structure failed","/podcast/srf-arena-final-analysis",{"title":442,"_path":443},"SRF Arena part 2: the EU AI Act, nationalization demands, and Switzerland's supercomputer strategy","/podcast/srf-arena-regulation-debate",{"title":445,"_path":446},"Deconstructing the SRF Arena AI debate: deepfakes, Swiss GPT, and the job displacement argument","/podcast/srf-arena-ai-debate-analysis",{"title":448,"_path":449},"O3-mini: how a smaller model outperforms its predecessor at a fraction of the cost","/podcast/openai-o3-mini",{"title":451,"_path":452},"OpenAI o3: trading compute time for reasoning capability","/podcast/openai-o3",{"title":454,"_path":455},"ChatGPT o1: reasoning breakthroughs and emergent deception","/podcast/chatgpt-o1-manipulation",{"title":457,"_path":458},"When AI kills: autonomous weapons, drone swarms, and predictive policing","/podcast/when-ai-kills",{"title":460,"_path":461},"Google's AI pivot: 25% AI-generated code and 90% cost reduction","/podcast/google-ai-revolution",{"title":463,"_path":464},"Why AI projects fail: a practitioner's guide to implementation","/podcast/ai-project-implementation",{"title":466,"_path":467},"Deep learning explained: from embedding spaces to few-shot learning","/podcast/deep-learning-explained",{"title":469,"_path":470},"Vision AI: why language models need to see, and how Llama 3.2 gets there","/podcast/vision-ai",{"title":472,"_path":473},"BitNets and the road to AGI: on-device inference and Sam Altman's 1000-day prediction","/podcast/bitnets-and-agi",{"title":475,"_path":476},"OpenAI o1 benchmarks and AGI implications: IQ 120, coding breakthroughs, and what they mean","/podcast/openai-o1-technical-analysis",{"title":478,"_path":479},"OpenAI o1 and the mechanics of self-reflection: how 70,000 hidden tokens change inference","/podcast/openai-o1-self-reflection",{"title":481,"_path":482},"AI utopia 2035: when automation funds a renaissance in human agency (part 2 of 2)","/podcast/ai-utopia-2035",{"title":484,"_path":485},"AI dystopia 2035: when AI becomes the lifeblood of the economy (part 1 of 2)","/podcast/ai-dystopia-2035",{"title":487,"_path":488},"AI hype vs. reality: a technical assessment of where things actually stand","/podcast/ai-hype-vs-reality",{"title":490,"_path":491},"Open-source AI: the infrastructure behind the hype","/podcast/open-source-ai",{"title":493,"_path":494},"Is AI intelligent? Why the question matters less than you think","/podcast/is-ai-intelligent",{"title":496,"_path":497},"AI in education: why bans backfire and what actually needs to change","/podcast/ai-in-education",{"title":499,"_path":500},"Bias in AI systems: how 15 people shape the values of a billion-user product","/podcast/bias-in-ai-systems",{"title":502,"_path":503},"AI and the labor market: autonomous agents and the transformation of knowledge work","/podcast/ai-and-the-labor-market",{"title":505,"_path":506},"AI terminology explained: a technical guide beyond the hype","/podcast/ai-terminology-explained",{"title":508,"_path":509},"AI and democratic manipulation: from Cambridge Analytica to language models","/podcast/ai-and-democracy",{"title":511,"_path":512,"children":513,"icon":372},"Appearances","/appearances",[514,517,520,523,526,529,532,535,538,541,544,547,550,553,556],{"title":515,"_path":516},"The Vibe Coding Experiment: building a RAG system from scratch at ch-open","/appearances/ch-open-vibe-coding-experiment",{"title":518,"_path":519},"AI trends 2025 and predictions for 2026: model convergence, integration, and sovereignty","/appearances/webinar-2025-rewind-2026-outlook",{"title":521,"_path":522},"Swiss AI Impact Forum 2025: live demos of the Swiss AI Hub","/appearances/swiss-ai-impact-forum-2025",{"title":524,"_path":525},"AI trends 2024 and predictions for 2025: a technical analysis","/appearances/webinar-2024-rewind-2025-outlook",{"title":527,"_path":528},"AI as a development partner: tools, techniques, and team integration","/appearances/webinar-ai-development-partner",{"title":530,"_path":531},"Swiss AI Impact Forum: Panel on the future of AI in Switzerland","/appearances/swiss-ai-impact-forum-2024",{"title":533,"_path":534},"AI in knowledge management: keynote at the SWICO event in Zurich","/appearances/swico",{"title":536,"_path":537},"Swiss AI Conference: hands-on workshop on AI agents in the enterprise","/appearances/swiss-ai-conference",{"title":539,"_path":540},"AI trends 2023: milestones and developments in artificial intelligence","/appearances/webinar-2023-rewind",{"title":542,"_path":543},"KI Revolution: AI first how a digital native thinks about generative AI","/appearances/bbv-ki-revolution",{"title":545,"_path":546},"AI agents: the future of enterprise automation","/appearances/netzwoche",{"title":548,"_path":549},"ChatGPT demystified: technical deep dive into large language models","/appearances/webinar-chatgpt-demystified",{"title":551,"_path":552},"Swarm intelligence and AI: the future of enterprise automation","/appearances/webinar-swarm-intelligence",{"title":554,"_path":555},"Polygon Software our journey to an innovative UZH tech startup","/appearances/readme-polygon",{"title":557,"_path":558},"UZH startup label for Polygon Software","/appearances/uzh-startup-label",1782731977627]