# Zero to a service that answers.

> Zero to a service that answers. No runtime to install, no container to build, nothing to configure. One binary in, one binary out.

Source: https://kern-lang.eu/get-started

No runtime to install, no container to build, nothing to configure. One binary in, one binary out.

```console
$ curl -fsSL https://kern-lang.eu/install.sh | sh
$ kern new api my-service && cd my-service
$ kern run

  my-service listening on :8080

$ curl localhost:8080/health
  {"status": "ok"}
$ 
```

## That is a real HTTP service.

Not a hello stub. It compiles to a native binary of about 115 KB that you can copy to a scratch container or a bare VM and run. There is no interpreter, no VM, and no node\_modules.

[Read “Try kern in five minutes” ](https://kern-lang.eu/blog/try-kern) 

## Then the part people re-read.

In kern these are compile errors: they cannot reach production, cannot be suppressed in a hurry, and cannot survive a distracted code review.

[Read the docs](https://codeberg.org/PUAGroup/kern-lang/src/branch/main/docs) [Open the playground](https://kern-lang.eu/playground) 

- `E0300`  
### A query built from user input does not compile.  
The same rule covers shell, URL, regex and template strings.
- `E0302`  
### Personal data reaching the wrong place does not compile.  
Tag a field as personal once and the compiler follows it into every sink.
- `E0303`  
### Model output reaching a sink does not compile.  
Anything an LLM returns comes back marked untrusted.
- `E0404`  
### A module without authority cannot open a socket.  
Authority is an argument you pass, so an audit reads the grants.
