Repository Config
Place a .fennoai.yml file in your repository to customize FennoAI’s behavior for that specific repo. The file is optional — FennoAI works with sensible defaults without it.
File Location
The configuration file can be placed in any of the following locations (listed from highest to lowest priority):
your-repo/
├── .fennoai.yml ← highest priority
├── .xgopilot.yml ← legacy filename
└── .github/
├── fennoai.yml ← GitHub-style
└── xgopilot.yml ← legacy filenameFennoAI checks these paths in order and uses the first one found.
Configurable Options
The repository-level config supports model settings and execution environment selection. Sensitive information (API keys, base URLs, etc.) is managed through global configuration and environment variables — not in the repo config.
Set a Default AI Model
# .fennoai.yml
default_ai_provider: claudeSupported values: claude, deepseek, gemini, minimax, kimi, zhipu, codex
Select an Execution Environment
Use environment_id to select the environment for new Issue/PR task sessions in this repository, including reviews:
# .fennoai.yml
environment_id: env_xxxUse an existing AgentAPI environment ID accessible to FennoAI, up to 128 bytes. This overrides the environment in the server’s Agent configuration without changing the Agent, runtime, or model selection. Omit the field or use an empty string to keep the server default.
Anyone who can change the default branch configuration can select an environment accessible through the server’s AgentAPI credentials. FennoAI does not enforce a separate environment allowlist per repository or organization. Deployment administrators must restrict those credentials to environments authorized for the repositories they serve; a shared credential with access across tenants does not provide repository-level isolation.
Resuming an existing session preserves its original environment. After changing the configuration on the default branch, wait for the repository configuration cache to refresh (platform reads are cached for about 5 minutes), then start a new Issue/PR task — for example with /code, /plan or /review — to create a session with the new environment. Starting a task does not refresh this cache itself. Deployments using a legacy local repository cache must update that cache first.
Execution retries keep the selected environment. If the environment is missing, inaccessible, or not ready, session creation fails without falling back to the default. Repository configuration read, parse, or validation errors also stop the task; a missing configuration file still uses the defaults.
This field currently applies to the main Issue/PR task session. Internal outcome-rubric scoring sessions keep their server-configured environment. Console Conversations and scheduled tasks do not use it yet. It does not create, build, or host environments.
Control Who Can Trigger FennoAI
Use require_member_to_trigger to control whether only repository members can trigger @fennoai and slash commands.
# .fennoai.yml
require_member_to_trigger: trueDefault behavior when this field is not set:
- Public repository:
true(member-only trigger)
Common examples:
# Public repo opt-out: allow any user to trigger
require_member_to_trigger: falseCustomize Model per Provider
You can override the model name for each provider:
# .fennoai.yml
default_ai_provider: claude
claude:
model: 'claude-sonnet-4'
# deepseek:
# model: "deepseek/deepseek-v3.2-251201"
# gemini:
# model: "gemini-3.0-pro-preview"Note: Provider fields in repository configuration only support model names. API keys, base URLs, and other sensitive settings are managed through global configuration.
How Configuration Takes Effect
Most .fennoai.yml settings take effect automatically on subsequent requests, with no restart or redeployment required. FennoAI reads the file from the default branch.
If you define schedule: tasks, note that:
- scheduled tasks are synchronized after a push to the default branch
- changing config only on a feature branch will not update production scheduled tasks yet
- see Scheduled Tasks for the full behavior
Configuration priority: Command-line flags > Repository config > Global config