Current status
Batch #001 sold outBatch #002 in production
Lobster Lager

A brewmaster & an AI agent
brewed a real beer.

Batch #001 is complete and sold out. Batch #002 is now in production. Sign up to hear when the sale opens.

Mashing grain in the Grainfather
First runnings — amber wort with wooden spoon
Rolling boil at 100°C with hop spider
brewOS dashboard running Batch #001
Fermenter holding at 12°C

Latest

TED2026TokenMade WinnerAIR Salzburg Award

By signing up, you agree to receive Batch #002 sale, tasting, and production updates. You can withdraw your consent at any time. Read our Privacy Policy.

> batch_002.subscribe({ sale_updates: true, spam: false })

Scroll to initialize

Network_Chatter

What People Are Saying

TED2026

How I created OpenClaw

Peter Steinberger shares the story behind OpenClaw and the people building with it.

Peter Steinberger

Peter Steinberger

@steipete

Hi, I'm a normie, I have no idea about software and now my openclaw brews beer and runs half of our design company.

💬 135🔄 65❤️ 1.8K
Rouzbeh

Rouzbeh

@JustRouzbeh

lol wait what did I just read openclaw brewing beer AND running a design company? need the full story on this one

Ahsen Masood

Ahsen Masood

@meetahsen

that's fucking brilliant. non-technical people automating real businesses with this tech is exactly why I built it.

💬 1🔄 0❤️ 5
Aequalis Lab

Aequalis Lab

@Aequalis_Lab

5 years ago, this was science fiction. Today, it's a Tuesday...

WarrenBuffed

WarrenBuffed

@a8r6n_wilhelm

first it brews your beer, then it runs your company. next it will be filing your taxes and walking your dog. the crustacean uprising is real.

Promspire

Promspire

@promspire

It is impressive to see openclaw move beyond tech circles. Using the same tool for a design firm and a brewery is a massive win for practical automation.

Peter Steinberger

Peter Steinberger

@steipete

Hi, I'm a normie, I have no idea about software and now my openclaw brews beer and runs half of our design company.

💬 135🔄 65❤️ 1.8K
Rouzbeh

Rouzbeh

@JustRouzbeh

lol wait what did I just read openclaw brewing beer AND running a design company? need the full story on this one

Ahsen Masood

Ahsen Masood

@meetahsen

that's fucking brilliant. non-technical people automating real businesses with this tech is exactly why I built it.

💬 1🔄 0❤️ 5
Aequalis Lab

Aequalis Lab

@Aequalis_Lab

5 years ago, this was science fiction. Today, it's a Tuesday...

WarrenBuffed

WarrenBuffed

@a8r6n_wilhelm

first it brews your beer, then it runs your company. next it will be filing your taxes and walking your dog. the crustacean uprising is real.

Promspire

Promspire

@promspire

It is impressive to see openclaw move beyond tech circles. Using the same tool for a design firm and a brewery is a massive win for practical automation.

Origin_Story

The Brewmaster and the Personal AI Assistant

Gerhard, the brewmaster

Gerhard

Retired brewmaster. Runs eibachbraui, a microbrewery in Gelterkinden, Switzerland. Certified beer sommelier, 2x Gold and 2x Silver at the Brau & Rauch Beer Contest. Knows everything about beer. Knows nothing about AI.

OpenClaw, the AI agent

OpenClaw

A personal AI assistant that actually does things. Open source, runs 24/7 on its own computer, and talks to you via WhatsApp or Telegram. Knows everything about automation. Knows nothing about beer.

One knows beer, the other knows machines.
Together they make Lobster Lager.

And then Stefan came, with the idea to connect Gerhard's Grainfather_G30 to a MacBook over Bluetooth, point OpenClaw at it, and let them brew together.

Stefan Erschwendner, the Initiator

Stefan

The Initiator. Founder of Frontira and Valhalla Venture Group. Connected the brewmaster with the AI builder to bring intelligence out of the terminal and into the physical world.

🍺

Beer Sommelier

Certified beer sommelier since 2021.

🏅

Award-Winning

2x Gold, 2x Silver at the Brau & Rauch.

Swiss Approved

Passed food safety inspection on first try.

🔓

Open Source

Code, data, and recipes. All public.

BATCH_002

Batch #002 is in production

Batch #001 is complete and sold out. Join the list for the Batch #002 sale announcement, availability and tasting news.

By signing up, you agree to receive Batch #002 sale, tasting, and production updates. You can withdraw your consent at any time. Read our Privacy Policy.

Want the full story on stage?

Book the keynote
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");
function compile_recipe(grain_bill: Array<Ingredient>) { return optimize(grain_bill, TEMP_RAMP); }
const BLE_CONN = await connectDevice(0x1800); if (!BLE_CONN) throw new Error("G30_NOT_FOUND");

What is OpenClaw doing?

OpenClaw was invented by Peter Steinberger, a renowned developer and friend of Stefan Erschwendner.

Both hailing from beer-loving Austria, sharing a mutual vision that all repetitive work in real-life should be done by AI agents.

Lobster Lager is using OpenClaw to brew beer, a show case you can tell your friends about.

The OpenClaw Agent
  • Inventor: Peter Steinberger
  • Hired by: OpenAI (ChatGPT)
  • Origin:Austria (Europe)
  • Mode:Working with Humans
  • Status:Brewing...
SYSTEM: BREW_OS v1.0.4

How OpenClaw Brews

$ The claw suggests. The human decides.

TERMINALtail -f /var/log/brew.log
STEP_01
> define_recipe.sh

The Prompt

Brewer sets grain bill, hop schedule. OpenClaw compiles to machine code.

STEP_02
> connect_ble --device g30

The Bridge

MacBook connects to the Grainfather via BLE. Real-time telemetry established.

STEP_03
> execute_mash_profile

The Control

OpenClaw manages temp ramps and pump cycles. Human monitors guardrails.

STEP_04
> enable_vision_sys

The Eyes

Computer vision verifies kettle states and foam levels. Double confirmation.

STEP_05
> export_telemetry

The Data

Every sensor read logged. The brew session becomes a reproducible dataset.

The Lobster Lager Founder

Stefan Erschwendner

As the Founder of Frontira International and Valhalla Venture Studios, Stefan has spent his career at the intersection of deep tech and real-world business value.

Lobster Lager isn't just a beer. It's a proof of concept. It demonstrates how autonomous AI agents can be trusted with physical, time-sensitive processes where precision is critical.

To craft a tangible show-case for both AI enthusiasts and forward-thinking managers, Stefan initiated this project to bring AI out of the terminal and into the physical world.

MEET STEFAN AND HIS TEAM

PLANNING_MODE

AI Use Case & Automation Consulting

If you are searching for AI use cases for your corporation, Frontira International provides the strategic roadmap for integration.

"Liberating Intelligent People from Unintelligent Work"

Contact Frontira
IMPLEMENTATION_MODE

AI Development & Venture Building

You have an idea or project already? Valhalla Venture Studio crafts autonomous agents for real-world transformation.

"Developing and deploying AI solutions on scale."

Contact Valhalla

Amber Lager

Rich, malty, and sessionable. A copper-colored lager built on Pilsner and Munich malts with English and Bavarian hops.

Lobster Lager

Amber Lager · 4.6% ABV · 0.33 L

engineered for taste

Batch_V0 · Founders_Edition

Tasting Notes

Amber-copper with a lasting white head. Bready Pilsner malt and toasty Munich malt up front, layered with caramel sweetness and a hint of honey from the Melanoidin malt. Mandarina Bavaria brings a subtle citrus note, while East Kent Goldings add earthy, floral depth. Clean lager finish. Sessionable at 4.6%.

Toasty MaltCaramelCitrus HopEarthy & FloralClean Finish

Style

Amber Lager

ABV

4.6%

IBU

20

Color

18 EBC

OG

12.2 °P

Batch

V0

GRAIN BILL (5.22 KG)

  • Pilsner Malt3.53 kg (67.6%)
  • Munich Malt Type I1.20 kg (23.0%)
  • Caramel Malt Amber0.24 kg (4.7%)
  • Melanoidin Malt0.24 kg (4.7%)

HOPS & YEAST

  • Mandarina Bavaria (FWH)16.0 g
  • East Kent Golding (15 min)6.2 g
  • Mandarina Bavaria (15 min)2.0 g
  • East Kent Golding (5 min)17.0 g
  • Fermentis Saflager W-34/702 packs

Hardware_Layer

Inside eibachbraui

Gelterkinden, Switzerland. Where Lobster Lager V0 comes to life.

The eibachbraui tasting room with long wooden table and tap station

The Taproom

Gerhard pouring crushed malt into the Grainfather mash tun

Adding Grain

Rolling boil at 99°C in the Grainfather G30

The Boil

Top-down view of the Grainfather G30 mash tun with BLE display

Mash Tun

Custom five-tap station with Brau & Rauch beer contest awards

Awards Wall

Four Grainfather fermenters with glowing digital displays

Fermentation

System_Logs

Latest from the Brew Journal

The newest milestones from the brewery, the stage, and Batch #002.

Event

ClawCamp Berlin: Gerhard takes the highlight session

Gerhard delivered ClawCamp Berlin's 6:00 p.m. highlight session at CODE University of Applied Sciences. At 68, he told the Lobster Lager story in his own words: how he turned decades of brewing experience into brewOS through experimentation with OpenClaw, while remaining the human in the loop for every physical brewing decision. He ended with 24 bottles at the bar. His verdict afterwards: “Voller Erfolg.” The feedback on the beer: “Nur positiv.”

View ClawCamp Berlin
Gerhard Erschwendner speaking during the ClawCamp Berlin highlight session at CODE University
Press

Gerhard is Handelsblatt's Entrepreneur of the Day

Handelsblatt, Germany's leading business newspaper, published a two page profile of Gerhard and Lobster Lager. The story follows Gerhard from his microbrewery in Gelterkinden to Jensen Huang's NVIDIA keynote and names him its Entrepreneur of the Day. More than a beer story, it is about curiosity, domain expertise and learning to build with AI at any age.

Read on Handelsblatt
Handelsblatt profile of Gerhard Erschwendner and Lobster Lager
Batch #002

Batch #002 enters production

Batch #001 is complete and sold out. Work on Batch #002 is now underway. Join the Batch #002 list to hear when the sale opens and where the next tasting will happen.

Video

TokenMade #04: How father and son reached the NVIDIA keynote

TokenMade dedicated a full episode to the Lobster Lager story. In 23 minutes, Stefan and Gerhard explain how a family experiment became OpenClaw brewery automation and how Jensen Huang brought the project to NVIDIA's keynote. Gerhard also opens the doors to his highly automated microbrewery and the practical setup behind it.

Watch on YouTube
Award

AIR Salzburg: Most Promising AI Project

Lobster Lager was awarded "Most Promising AI Project" at AIR Salzburg 2026. From a morning run idea to an AI award in Salzburg. The lobster landed where it all started.

Visit AIR Salzburg
Lobster Lager receives Most Promising AI Project award at AIR Salzburg 2026