Using Ülgen¶
First run¶
You need an EVREN account (sign-in is through e-Devlet) and one of the supported tools installed.
That is all. On the first run Ülgen signs you in, finds the tools you have installed, asks which one you want, sets it up for EVREN and starts it. Later runs start that tool straight away; ulgen opencode (or qwen, codex, claude) switches to another one, and anything after the name is passed to the tool.
Each step is also a command of its own:
ulgen login # opens EVREN's API keys page, asks for the key, shows the terms, saves the key
ulgen setup qwen # writes the EVREN provider into Qwen Code
ulgen run qwen # starts Qwen Code with the key in its environment
ulgen status shows the remaining daily quota and the models. ulgen setup on its own lists the tools and their state. When something does not work, ulgen doctor checks the key, EVREN and every tool and says what to do.
What you can do with it¶
ulgen # pick a tool once, then just start coding
ulgen claude # Claude Code on an EVREN model, in the current project
ulgen qwen -p "explain this repository" # one question, answered in the terminal
ulgen doctor # something is off: what, and what to do about it
ulgen status # how much of today's quota is left
ulgen setup --remove all # take Ülgen's settings out of every tool again
Supported tools¶
| Tool | ulgen setup <name> |
What setup writes |
|---|---|---|
| Qwen Code | qwen |
The EVREN models in settings.json |
| opencode | opencode |
The EVREN provider in opencode.json |
| Codex CLI | codex |
A profile file of its own, evren.config.toml; your config.toml is never written |
| Claude Code | claude |
Only a skill for EVREN workers; ulgen run claude needs no settings file |
Every changed file is backed up first, and --dry-run shows the change without writing it. ulgen setup --remove <name> undoes it: what Ülgen wrote goes, what you wrote stays.
Commands¶
ulgen sign in, pick a tool, set it up and start it
ulgen <tool> the same for one tool: qwen, opencode, codex, claude
ulgen login sign in to EVREN: opens the API keys page, saves the key, records that you accepted the terms
ulgen logout remove the saved key
ulgen status remaining daily quota and models
ulgen doctor check the key, EVREN and the tools; say what to do about what is wrong
ulgen setup set up coding tools for EVREN (qwen, opencode, codex, claude)
ulgen run start a tool with the key in its environment; Claude Code through the translator
Advanced:
ulgen worker run one headless Claude Code on an EVREN model to do a task unattended
ulgen proxy run the translator on its own, for a program that speaks the Anthropic API
ulgen token print the saved key for another program
ulgen version print the version
ulgen <command> -h lists a command's options. Every command follows the system language, Turkish or English.
A full guide in Turkish: EVREN'i kodlama araçlarınızda kullanma.
Your key stays yours¶
- It is stored in the operating system's credential store (or, where the system has none, in a file only you can read), and only after EVREN accepted it.
- It is never written into a tool's settings file; the tools get it from their environment when
ulgen runstarts them. - It is never printed or logged, and it is removed from error messages a server sends back.
- Claude Code never receives it at all: it talks to a translator inside Ülgen on your own machine.
ulgen runrefuses to start a tool in a project whose own settings file could send the key elsewhere.
The reasoning behind these and the other decisions is in docs/design.md.
Known limits¶
- Anthropic does not support using Claude Code with other models.
ulgen run claudeworks through a translator and says so once per run. - In a one-shot run (
ulgen claude -p), Claude Code writes one line to standard error,[claude-code:unrecognized_model] {…}, because it does not know EVREN's model names. It is a note, not an error: the request goes out unchanged. - Token counts shown by Claude Code on EVREN are estimates.
- When it ends, Claude Code suggests
claude --resume <id>. Run as it is, that command does not go through Ülgen;ulgen claude --resume <id>resumes the session on EVREN. - On Windows, a tool whose launcher is not the standard one npm writes is started through
cmd.exe, and then an argument may not contain",%,^or!.