Skip to main content

Configuration

Every key below is one a jevlin command reads. The value after # is what you get by leaving the key out. Setup writes this file for you; most installations never edit it.

[[provider]]
upstream = "https://api.jevlin.ai" # https only; the router_url fallback

[mining]
enabled = true # only a scripted first answer — see below
as_url = "https://rewards-testnet.jevlin.ai" # unset: no AS, so no mining work at all
chain_id = "twilight-testnet-1" # required once as_url is set
slot_id = 3 # required once as_url is set
state_dir = "/home/you/.jevlin/state" # default: <user config dir>/jevlin/state
spool_dir = "/home/you/.jevlin/spool" # default: <state_dir>/spool
# payout_address = "twilight1..." scripted `connect`/`mining enable` answer;
# leave unset to be asked at a terminal instead
# platform_slot = "twilight-slot-3" required only if the platform ever offers
# more than one mining slot to enroll into
# target_epoch = 1042 pin the epoch; unset means ask the AS
# metadata_ttl = "15m" how long the AS service document is cached
# collector_max_attempts = 0 0 means no attempt ceiling on delivery

[platform]
base_url = "https://platform.jevlin.ai" # the human portal and claim pages
agents_api_url = "https://agents-v1.jevlin.ai" # register/status/enroll — a separate host

[miner]
enabled = true # default false
intake_dir = "/home/you/.jevlin/intake" # served request ids, until flushed
sessions_dir = "/home/you/.jevlin/sessions" # per-workspace lineage files
flush_interval = "3m" # default 3m: how often a flush re-asks the AS
turn_end = false # default false: report a searched turn's final answer (see The turn end)
tier = "" # fast | balanced | max; unset = the router's default. `agents tier` outranks it; another word is ignored and named by `agents tier status`
# router_url = "..." defaults to the [[provider]] upstream

[update]
mode = "apply" # default apply: apply | notify | off; the daily release check (see Files and locks). Another word checks and notifies only, and doctor names it

What the keys mean​

[mining] enabled is not the switch. Whether mining is on is the decision connect, mining enable or mining disable last recorded in the state directory, and editing the key afterwards changes nothing. The key is only a scripted first answer for a headless onboarding. Absent means nobody has answered, so a terminal is asked; an explicit false at a terminal is an opt-out connect does not re-ask. Setup writes enabled = true only with no terminal and JEVLIN_MINING=1. [miner] enabled says only that intake is configured, and a non-empty as_url says an authorization server exists. An unreadable decision counts as degraded, which also stops mining.

[miner]'s directories. intake_dir and sessions_dir default beside the state directory. intake_dir's parent is where credentials.json, flush.lock, the payout address you chose (payout.json), the claim link (claim.json) and an unfinished registration (registration_pending.json) are kept: never the state directory, which an agent's sandbox may write. A payout.json an older version left in the state directory is never declared from there, and a claim link an older version kept in state/agent.json is not read; the next jevlin connect mints a fresh one.

[miner] tier is the band a search carries when the request names none. agents tier outranks it, and the request's own tier outranks both. A word this version cannot name is ignored at load and named by agents tier status. See Choosing a band.

[miner] turn_end turns on the end-of-turn report. See The turn end.

[update] mode is what the daily release check may do: apply (the default) replaces a native binary with a newer verified release, notify only records that one exists, off runs no check. A word this version cannot name checks and notifies only, and doctor names it. See Upgrading. An older jevlin refuses a config that names the key, as it refuses any key it does not know.

URLs. base_url is never dialed: a printed claim link must point there. agents_api_url is where connect and mining enable send requests. A non-default, non-loopback base_url without agents_api_url is refused; a loopback one alone defaults agents_api_url to it. Every URL must be https, or http on loopback.

Unknown keys are an error. The parser also accepts the [proxy], [transport], [privacy], [log] and [observe] sections and [[provider]]'s name and tier, which belong to a sibling proxy; no jevlin command reads them.

Setup and an existing config. Setup loads an existing config first and refuses one that does not load. One with a [miner] table is left byte for byte. One without gains only the [platform] and [miner] tables it lacks, appended, and must load before it is saved. Setup never rewrites the hosts in a config it finds; to move an installation to new hosts, edit the file and run jevlin agents install.

Who can open the state directory, on Windows. jevlin setup gives <home>\state an access list that names only you, and repairs it on every run. A state_dir that setup, connect, enroll, mining enable or mining disable creates gets the same list, with you as its owner. A directory that already exists is left as it is, and so is any entry another program has added, because an agent's sandbox is meant to reach this directory. doctor's state access line says whose the directory is and names anyone else the list admits.

Where the file lives​

~/.jevlin/jevlin.toml on the default layout, or $JEVLIN_HOME/jevlin.toml. How a command chooses its config is on Commands; every file beside it is on Files and locks.