{"slug": "goose-lang-and-flisk-sh-101-two-binaries-not-one-flag", "title": "Goose Lang and Flisk.sh 101: Two Binaries, Not One Flag", "summary": "A developer published the first part of a tutorial series distinguishing three tools that share the name \"goose\": Wouter van Oortmerssen's Goose compiler, which emits C with no heap or garbage collector; the AAIF AI agent; and pressly/goose, a database migrator. The guide also covers flisk.sh, which generates Docker and Tilt files from a service.json and starts a local stack, and notes that its --language flag supports Bun/Hono, Python/FastAPI, Go net/http, Rust axum and Node, but should fail for a \"goose\" backend.", "body_md": "Part 1 of Goose lang and Flisk.sh 101.\n\nThis series is a laptop tutorial. Part 2 and 3 are the [Goose programming language](https://github.com/aardappel/goose). Part 4 is [flisk.sh](https://flisk.sh/). Part 5 puts both in one folder and stops before the lie.\n\n| You typed | What it is | In this series | \n|---|---|---|\n| `goose hello.goose` | Wouter van Oortmerssen's compiler. It emits C. No heap, no GC. | Parts 2 and 3 | \n| `goose configure` | The AAIF AI agent. Desktop, CLI, recipes. | Not this series | \n| `goose up` | pressly/goose, the database migrator. | Not this series | \n\nIf `goose --version` talks about providers, you installed the agent. The language compiler's first useful command is `goose hello.goose` or `goose build hello.goose`. Check `which goose` before part 2 and do not put the agent and the compiler on the same `PATH` entry.\n\nFlisk starts services on your machine. You describe one in `service.json`. `flisk up` writes Docker and Tilt files and starts that stack. It is not a deploy tool. Production stays on Helm, Argo CD, or Kustomize.\n\nBackend languages you can pass today:\n\n| `--language` | What you get | \n|---|---|\n| omitted | Bun and Hono | \n| `python` | FastAPI | \n| `go` | `net/http` | \n| `rust` | axum | \n| `node` | `node:http` | \n| `goose` | the CLI should fail before it writes files | \n\nA generated backend answers `GET /health`, reads `PORT`, and binds every interface. A Goose program from the language tutorial prints a line and exits. Those are not the same process. Part 5 is where that matters. Do not skip there and invent a flag.\n\n`flisk up`. `flisk doctor --no-ping` does not need them.`goose build`. Linux also needs libc headers (` libc6-dev` or `glibc-devel`). macOS needs the Xcode command line tools. In-process `goose file.goose` needs those headers too, but not a separate compile of your program.\nAfter part 4's install, this is the negative test:\n\n```\nflisk resource orders-api --type backend --language goose --stack shop\n```\n\nExpect a failure and an empty directory. If a future Flisk version accepts `goose`, stop this series and read that version's provider guide. Do not keep a tutorial that contradicts `--help`.\n\n```\nshop/\n  hello.goose          # part 2, host only\n  total.goose          # part 3, host only\n  services/shop/orders-api/   # part 4, Flisk owns this tree\n```\n\nYou own `hello.goose` and `service.json`. Flisk owns `.autogenerated/`. An editor, human or agent, does not \"fix\" a generated Dockerfile to make Goose look like a backend.\n\nNext: install the compiler and print one line.", "url": "https://wpnews.pro/news/goose-lang-and-flisk-sh-101-two-binaries-not-one-flag", "canonical_source": "https://dev.to/flisk/goose-lang-and-flisksh-101-two-binaries-not-one-flag-2ngj", "published_at": "2026-10-22 21:32:51+00:00", "updated_at": "2026-10-22 21:40:59.123345+00:00", "lang": "en", "topics": ["developer-tools"], "entities": ["Goose", "Wouter van Oortmerssen", "AAIF", "pressly/goose", "Docker", "Tilt", "Bun"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/goose-lang-and-flisk-sh-101-two-binaries-not-one-flag", "markdown": "https://wpnews.pro/news/goose-lang-and-flisk-sh-101-two-binaries-not-one-flag.md", "text": "https://wpnews.pro/news/goose-lang-and-flisk-sh-101-two-binaries-not-one-flag.txt", "jsonld": "https://wpnews.pro/news/goose-lang-and-flisk-sh-101-two-binaries-not-one-flag.jsonld"}}