# Goose Lang and Flisk.sh 101: Two Binaries, Not One Flag

> Source: <https://dev.to/flisk/goose-lang-and-flisksh-101-two-binaries-not-one-flag-2ngj>
> Published: 2026-10-22 21:32:51+00:00

Part 1 of Goose lang and Flisk.sh 101.

This 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.

| You typed | What it is | In this series | 
|---|---|---|
| `goose hello.goose` | Wouter van Oortmerssen's compiler. It emits C. No heap, no GC. | Parts 2 and 3 | 
| `goose configure` | The AAIF AI agent. Desktop, CLI, recipes. | Not this series | 
| `goose up` | pressly/goose, the database migrator. | Not this series | 

If `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.

Flisk 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.

Backend languages you can pass today:

| `--language` | What you get | 
|---|---|
| omitted | Bun and Hono | 
| `python` | FastAPI | 
| `go` | `net/http` | 
| `rust` | axum | 
| `node` | `node:http` | 
| `goose` | the CLI should fail before it writes files | 

A 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.

`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.
After part 4's install, this is the negative test:

```
flisk resource orders-api --type backend --language goose --stack shop
```

Expect 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`.

```
shop/
  hello.goose          # part 2, host only
  total.goose          # part 3, host only
  services/shop/orders-api/   # part 4, Flisk owns this tree
```

You 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.

Next: install the compiler and print one line.
