Skip to content
ivralo
Sections

Docs / Reference

Environment variables

Every IVRALO_* variable ivralo reads, with its default and what it changes, grouped by topic. Each one has a working default, so a home needs only the few you want to change.

How a setting is read

Each variable is read once, when ivralo starts, from three places. The first that has a value wins:

  1. The environment of the process: what your shell, your service manager or a CI job exported. A file never changes a value that was exported.
  2. The workspace's .ivralo/.env, at the root of the repository ivralo was started in, but only once you have trusted the folder. It never sets IVRALO_HOME, IVRALO_MODE, IVRALO_FORGE_GH or IVRALO_GITHUB_URL: a repository cannot grant itself an unattended push.
  3. The home's .env, in your ivralo home.

A repository's own .env is never read; it holds the project's secrets, not ivralo's. A folder you trust during a session has its .ivralo/.env read at that moment.

How a value is parsed:

  • A switch is on for 1, true, yes or on, in any case. Anything else is off, and an unset switch keeps its default.
  • A number that is not a number falls back to the default. Where the table says "at least 1", zero and negatives also mean the default; where it says "below 1 counts as 1", they mean 1.
  • A choice that is not one of the allowed words falls back to the first one. For IVRALO_PROFILE the fallback is reported by ivralo doctor.

The provider SDKs read their own keys (ANTHROPIC_API_KEY, OPENAI_API_KEY and the rest); ivralo only checks that one was found. See Models.

Models

VariableDefaultWhat it does
IVRALO_MODELgemma4:26bThe model every role runs on unless something narrower names another. An Ollama tag, or provider:model.
IVRALO_COORDINATOR_MODELthe main modelThe main agent's model. Set this to run the main agent on a different model from the specialists.
IVRALO_MODEL_<KEY>the main modelOne specialist's model, by its preset key: IVRALO_MODEL_CODER, IVRALO_MODEL_INVESTIGATOR, IVRALO_MODEL_ANALYST. Keys are on Capabilities and presets.
IVRALO_MEMORY_MODELthe main modelThe small model that extracts memories and names conversations.
IVRALO_OLLAMA_HOSThttp://localhost:11434Where Ollama listens, for chat models and the embedder. Plain OLLAMA_HOST is not read.
IVRALO_REQUEST_TIMEOUT300Seconds one request to a model or the embedder may wait. It is retried once. IVRALO_TIMEOUT is the old name, read when this one is unset.
IVRALO_NUM_CTX16384Ollama's context window. Raising it costs memory on the GPU.
IVRALO_OLLAMA_THINKoffoff tells a thinking-capable Ollama model not to think; on leaves Ollama's own behaviour.
IVRALO_NUM_PREDICT8192Ollama's reply cap: a runaway generation stops here.
IVRALO_KEEP_ALIVE30mHow long Ollama keeps the weights loaded between calls.
IVRALO_TEMPERATURE0.2Sampling temperature. A hosted model receives it only when the variable is set; otherwise it keeps its own default.
IVRALO_MAX_TOKENS8192The longest reply a hosted or OpenAI-compatible model may write.
IVRALO_CONTEXT_WINDOW0The window the context meter measures against. 0 means IVRALO_NUM_CTX for a local model and 128000 for a hosted one.
IVRALO_<PACKAGE>_URLnoneWhere a provider package listens when it is not where it assumes: IVRALO_VLLM_URL, IVRALO_LMSTUDIO_URL, IVRALO_LLAMA_CPP_URL.
IVRALO_OPENAI_COMPATIBLE_URLnoneThe server behind the openai-compatible provider: a LiteLLM proxy, llama.cpp's server, a gateway. Required for that provider.
IVRALO_OPENAI_COMPATIBLE_KEYemptyIts API key. Kept out of the Python worker.

Embeddings and the knowledge index

VariableDefaultWhat it does
IVRALO_KNOWLEDGEonThe workspace's knowledge index and the Librarian that searches it. Off drops both.
IVRALO_EMBED_MODELnomic-embed-textThe embedder. A bare name is an Ollama tag.
IVRALO_EMBED_DIMENSIONS768The vector size. It must match the embedder; change it, then run ivralo index --rebuild --all.
IVRALO_EMBED_CODE_HOSTEDoffWhether a hosted embedder may embed code for semantic code search. Off, it refuses code.
IVRALO_KNOWLEDGE_RESULTS5How many hits a search returns.
IVRALO_CHUNK_SIZE1500The size of one indexed chunk.
IVRALO_INDEX_LANGUAGEsimpleThe PostgreSQL text-search configuration for the keyword half of the search. simple matches codes and names in any language; english or turkish adds stemming. Needs ivralo index --rebuild.
IVRALO_INDEX_VECTOR_WEIGHT0.5How much the vector half weighs against the keyword half, from 0 to 1.

See Embeddings and The knowledge index.

Database

ivralo keeps its own state (sessions, runs, memory, jobs, the index) in PostgreSQL. See PostgreSQL.

VariableDefaultWhat it does
IVRALO_DB_URLemptyA full SQLAlchemy URL. When set it wins over every part below. ivralo init --postgres writes it.
IVRALO_PG_HOST127.0.0.1The host. The IPv4 loopback on purpose: localhost can resolve to IPv6 first on Windows.
IVRALO_PG_PORT5432The port.
IVRALO_PG_USERivraloThe user.
IVRALO_PG_PASSWORDivraloThe password. ivralo init offers to generate one.
IVRALO_PG_DBivraloThe database.
IVRALO_PG_SCHEMAivraloThe schema every table goes in.
IVRALO_PG_CONNECT_TIMEOUT5Seconds to wait for the connection before giving up. Anything under 2 counts as 2.

Home, workspace and files

VariableDefaultWhat it does
IVRALO_HOMEthe checkoutThe ivralo home: its .env, skills and settings files. Without it, ivralo uses the checkout you are in, or the one it runs from.
IVRALO_WORKSPACEthe repository you are inWhere the team reads and writes. Outside a repository, workspace/ in the home.
IVRALO_SKILLS_DIRskills/ in the homeThe shipped skill shelf.
IVRALO_SKILLS_LOCAL_DIRskills.local/ in the homeInstalled and scaffolded skills, with assignments.json.
IVRALO_MCP_CONFIGmcp.json in the homeThe MCP servers file.
IVRALO_PERMISSIONSpermissions.json in the homeThe home's permissions file.
IVRALO_DATABASESdatabases.json in the homeThe home's named databases.
IVRALO_IDENTIFIERSidentifiers.json in the homeThe home's list of identifiers to mask in incident evidence.
IVRALO_GOOGLE_TOKENgoogle-token.json in the homeThe Google sign-in token.
IVRALO_SCHEDULESschedules.json in the homeThe schedules file.
IVRALO_BRAND_FILEbrand.json in the homeThe house colours every document, deck and chart uses.
IVRALO_SESSION_IDthe shared sessionAttach this terminal to a named session, as ivralo -s does.
IVRALO_USER_IDownerWhose memories and sessions these are.

Every file is described on Settings files.

Modes, profile and grants

VariableDefaultWhat it does
IVRALO_MODEdeveloperdeveloper or server: what a run nobody attends may do. server also lets it commit, push a branch ivralo made and open a draft pull request. Home or environment only.
IVRALO_FORGE_GHoffWhether opening a pull request may use the gh CLI's own login. Written only by a yes at a terminal during ivralo init --server. Home or environment only.
IVRALO_PROFILEnormalnormal, or strict: no shell, no web, no sending, no writes to Google or GitHub, no edits or commits, no MCP servers. It only narrows.
IVRALO_MAIN_GRANTSthe whole declared setNarrow what the main agent may hold: grant names separated by commas or spaces, or none to leave it only its hand-offs. It never widens.

See Capabilities and presets and Server mode.

Team and limits

VariableDefaultWhat it does
IVRALO_TOOL_CALL_LIMIT20Tool calls per run for a specialist that sets no limit of its own.
IVRALO_TOOL_CALL_LIMIT_<KEY>the preset's ownOne specialist's limit, by preset key. The Code Engineer's is 200 and the Investigator's 40. IVRALO_TOOL_CALL_LIMIT_COORDINATOR is the main agent's, 200 by default.
IVRALO_CODERS3How many Code Engineers can work at once in a repository. Below 1 counts as 1.
IVRALO_INSTANCES24Open instances one agent may hold. 0 takes instances away.
IVRALO_INSTANCE_DEPTH2How deep instances may nest. Below 1 counts as 1.
IVRALO_INSTANCES_PER_OPENER8How many instances one instance may hold open. Below 1 counts as 1.
IVRALO_INSTANCE_BUDGET1000000Tokens a top-level instance and everything under it share. 0 turns the budget off.
IVRALO_ASK_MEMBERonWhether a specialist may put a question to a colleague mid-task.
IVRALO_ASK_MEMBER_TIMEOUT300Seconds one such question may take. At least 1.
IVRALO_ASK_MEMBER_LIMIT5Questions one specialist's run may ask. At least 1.
IVRALO_SHARE_INTERACTIONSoffWhether each hand-off to a specialist is given the tasks and replies of the hand-offs that ended before it in the same run.
IVRALO_TEAM_MODEcoordinateThe team's routing mode in agno: coordinate, route, broadcast or tasks.
IVRALO_MAX_ITERATIONS8The team's iteration cap in agno.
IVRALO_HISTORY_RUNS5How many past runs stay in the model's context.
IVRALO_HISTORY_TOOL_CALLS6Of the tool calls in that history, how many newest keep their results.

See Instances and Parallel coders.

Plans, memory and context

VariableDefaultWhat it does
IVRALO_AUTO_PLANonA request that reads as several steps is planned and approved before anything runs.
IVRALO_PLAN_MODEoffThe session starts in plan mode: every message is planned first.
IVRALO_PLAN_PARALLELonPlan steps that do not need each other run together, a wave at a time. Off, every step is its own wave.
IVRALO_MEMORYonLong-term memory about you.
IVRALO_MEMORY_UNATTENDEDoffWhether runs nobody attends (ivralo ask, a schedule, a job, the API) also extract memories. They read memories either way.
IVRALO_COMPACT_THRESHOLD0.85The fraction of the context window at which the meter turns red and, with auto-compact on, the session is summarized.
IVRALO_AUTO_COMPACTonSummarize automatically after a turn that crossed the threshold. Off, you are warned and run /compact yourself.
IVRALO_VERBOSEoffPrint agno's own panels, with every tool argument in full.
IVRALO_DEBUGoffagno's debug output.

Editing and code

VariableDefaultWhat it does
IVRALO_CHANGESEToffStage each turn's edits as one changeset, in the session and in ivralo ask.
IVRALO_HISTORYonCopy a file to .ivralo/history/ before it is overwritten.
IVRALO_HISTORY_KEEP10Versions kept per file.
IVRALO_WHOLE_FILE_WRITESoffLet write_file replace a file that exists. Off, an existing file changes only by a named edit.
IVRALO_EDIT_REFUSES_ON_DIAGNOSTICoffRoll a symbol edit back when the language server reports a new error, instead of reporting it beside the edit.
IVRALO_LSP_TIMEOUT30Seconds one request to a language server may take.
IVRALO_LSP_WARMUP_WAIT15Seconds a tool waits for a language server that is still starting.
IVRALO_CODE_INDEX_BUDGET2.0Seconds a turn's start may spend refreshing the code index. 0 turns that refresh off.
IVRALO_EXPLORATION_BUDGET0Exploration tokens one agent may spend in a turn before wide reads are refused. 0 counts nothing.
IVRALO_EXPLORATION_FILE_LINES200The widest file read that is never refused.
IVRALO_SLICE_BUDGET2000Tokens a code slice fills when the call names none, held between 200 and 8000.
IVRALO_BISECT_STEPS20The most commands one ivralo bisect runs.
IVRALO_BISECT_STEP_TIMEOUT900Seconds one bisect step may run; past it the commit is skipped.
IVRALO_INSTALL_TIMEOUT1800Seconds the project's install step may run during ivralo init --server.

See Code intelligence, Changesets and Git.

The Python worker

VariableDefaultWhat it does
IVRALO_PYTHON_ISOLATIONprocessprocess runs a specialist's Python in a worker process of its own, capped in time and memory, with no credential in its environment. inline runs it in ivralo's own process, for a debugger only.
IVRALO_PYTHON_TIMEOUT300Seconds one Python run may take.
IVRALO_PYTHON_MAX_MB4096The worker's memory cap in MB. 0 lifts it.

See The Python worker.

Server, API, jobs and incidents

VariableDefaultWhat it does
IVRALO_API_PORT61017The loopback port ivralo serve listens on.
IVRALO_API_APPROVAL_TIMEOUT1800Seconds an approval through the API waits before the call is rejected.
IVRALO_JOB_LEASE_SECONDS60Seconds a running job's heartbeat stays good. Past it, the next process may take the job over.
IVRALO_JOB_HEARTBEAT_SECONDS10.0Seconds between a running job's heartbeats.
IVRALO_ALERT_DEDUP_SECONDS21600Seconds an alert's investigation stands for that alert: the same alert again within them starts no second job.
IVRALO_ALERT_STUBS_KEEP200Alert folders kept under alerts/. 0 keeps them all.
IVRALO_INCIDENT_HOSTED_MODELoffWhether a hosted model may read incident evidence. It also needs IVRALO_INCIDENT_MASK. ivralo incident --hosted turns it on for one run.
IVRALO_INCIDENT_MASKoffReplace the identifiers in identifiers.json, and IP and e-mail addresses, with placeholders before a model reads the evidence.

See Local API, Jobs, Alert intake and Privacy and masking.

The web

VariableDefaultWhat it does
IVRALO_WEBonThe Librarian's web search, read and save. Only the query leaves the machine.
IVRALO_WEB_RENDERonRender a blocked page or a rate-limited search in headless Chromium.
IVRALO_WEB_TIMEOUT20Seconds one web request may take.
IVRALO_SEARXNG_URLemptyA self-hosted Searxng, used as a further search backend.
IVRALO_SEARXNG_SECRETemptyThe secret the Searxng container signs cookies with. ivralo only checks that it is set.
IVRALO_REASONINGoffagno's think and analyze tools on the Librarian.

Integrations

VariableDefaultWhat it does
IVRALO_MAILemptysmtp or resend gives the team a Courier that sends mail. Empty means no mail.
IVRALO_MAIL_FROMemptyThe sender address.
IVRALO_MAIL_ALLOWEDemptyAddresses or @domains mail may go to, comma separated. Empty allows any.
IVRALO_MAIL_MAX_MB10The attachment cap in MB.
IVRALO_SMTP_HOSTemptyThe SMTP server.
IVRALO_SMTP_PORT587Its port.
IVRALO_SMTP_USERemptyThe SMTP user.
IVRALO_SMTP_PASSWORDemptyThe SMTP password.
IVRALO_SMTP_SECURITYstarttlsstarttls, ssl or none.
IVRALO_RESEND_API_KEYemptyThe Resend API key.
IVRALO_TELEGRAM_BOT_TOKENemptyA Telegram bot for short messages. Needs the chat id too.
IVRALO_TELEGRAM_CHAT_IDemptyThe chat the bot posts to.
IVRALO_SLACK_WEBHOOK_URLemptyA Slack incoming webhook for short messages.
IVRALO_GOOGLE_SERVICESemptyGoogle services the Secretary connects to: any of sheets, drive, calendar, gmail, comma separated. Empty means no Secretary.
IVRALO_GOOGLE_WRITEoffLet the Secretary draft, create and update. It never sends.
GOOGLE_CLIENT_IDemptyThe Google desktop OAuth client.
GOOGLE_CLIENT_SECRETemptyIts secret.
GITHUB_ACCESS_TOKENemptyA GitHub token. Setting it puts the GitHub Clerk on the team; it is also the token a draft pull request is opened with.
IVRALO_GITHUB_WRITEoffAdd GitHub's write tools, each call approved.
IVRALO_GITHUB_URLgithub.comA GitHub Enterprise API base (https://host/api/v3). Home or environment only.
IVRALO_SQL_URLemptyYour own database for the analyst, read-only: the connection named default.
IVRALO_SQL_ROW_CAP200Rows one query returns at most.
IVRALO_SQL_TIMEOUT20Seconds one query may run.
IVRALO_UNSPLASH_ACCESS_KEYemptyUnsplash's key, for stock photos in documents.

See E-mail and chat, Google Workspace, GitHub and Documents and data.

Observability

VariableDefaultWhat it does
IVRALO_OTEL_ENDPOINTemptyAn OTLP/HTTP collector to send spans to. Empty means nothing leaves the machine. /v1/traces is added when the URL has no path.
IVRALO_OTEL_SERVICEivraloThe service.name the spans carry.

See Observability.

The session and documents

VariableDefaultWhat it does
IVRALO_PREVIEW_IMAGESonShow the pictures a turn produced under the reply.
IVRALO_PREVIEW_ROWS14Terminal rows one picture takes.
IVRALO_PREVIEW_MAX3Pictures shown per turn.
IVRALO_PREVIEW_RENDERERautoauto, sixel, tgp, halfcell or unicode, when the detection is wrong.
IVRALO_FOLLOW_UPonOne suggested next message after each reply.
IVRALO_REDUCED_MOTIONoffStill spinners and no fades, in the session and the CLI.
IVRALO_SESSION_TITLEonThe memory model names a conversation after its first reply.
IVRALO_FONTDejaVu SansA TrueType font file for PDFs. Its -Bold, -Oblique and -BoldOblique siblings are used when they exist.
IVRALO_DOCLINGdocling on the PATHThe docling program used for OCR.
IVRALO_OCR_LANGStr,enOCR languages, comma separated.

Evals

These matter only to someone running ivralo's own evals. See Evals.

VariableDefaultWhat it does
IVRALO_EVAL_JOBS1Eval runs at once without --jobs.
IVRALO_TUNE_MODELthe main modelThe model ivralo eval --tune asks for a skill rewrite.
IVRALO_TUNER_INPUT_TOKENS16000Tokens one tuner call may be handed.