what does lulu init do?

The older wizard, for when you want to choose where the key goes. It walks one person through storing one key, stores it, and says out loud where it stored it.

how do you run it?

In the parser’s own words, the older wizard, which asks where to store the key. Every flag this build accepts, on one line:

lulu init [--provider PROVIDER] [--from-file PATH] [--from-env]
lulu init ± asks, with the typing hidden
lulu init --from-env ± reads the provider's environment variable
lulu init --from-file PATH ± reads the key from a file, then delete the file

why can the key come from a file or the environment?

There has to be a way in that does not need a terminal. The prompt this used to insist on cannot hide what is typed unless it owns a tty, and the places people actually run setup from now include editors, agent shells and CI, none of which give it one. Asking anyway ended in a traceback with the key half typed, which is the worst of both: nothing stored, and a secret possibly echoed on its way to failing.

So the secret can arrive from the environment or from a file instead, and the interactive path is what happens when a tty is there to make it safe. Neither of the other two puts the key in shell history, which is the thing the hidden prompt was protecting against in the first place.

which variables does it read?

ANTHROPIC_API_KEY then LULU_ANTHROPIC_API_KEY for claude, and PERPLEXITY_API_KEY then LULU_PERPLEXITY_API_KEY for perplexity sonar. When none of them is set it names every one it tried and says so: there was nothing to read.

which flags does it take?

--provider PROVIDER ± which engine the key is for, default anthropic
--from-file PATH ± read the key from this file instead of prompting; delete the file afterwards
--from-env ± read the key from the provider's environment variable instead of prompting

where does it lead?