Referência do manifesto
Todas as chaves do beeuni.yaml v2, com valores padrão, limites e regras de validação.
O manifesto é o arquivo que a plataforma considera a fonte oficial de um projeto. Esta página lista todas as chaves beeuni.yaml (v2), seus tipos, valores padrão e como a plataforma as valida. Para uma versão em linguagem simples, consulte Seu projeto.
Duas superfícies de configuração
Um projeto Beeuni tem duas superfícies de configuração com responsabilidades estritas e sem sobreposição.
- Configuração Beeuni —
beeuni.yamlna raiz do repositório define o ambiente do projeto, os agentes, as ferramentas, os conectores e os gatilhos. Os modelos de sandbox podem referenciar um Dockerfile personalizado. - Configuração do agente — os arquivos do agente, as skills e os arquivos do harness. O harness do agente lê isso, no sandbox e localmente.
| Caminho | O que contém |
|---|---|
beeuni.yaml |
O manifesto: agentes e o que cada um pode acessar, gatilhos, conectores, env e modelos de sandbox. |
agents/<name>.md |
Um agente: frontmatter e prompt do sistema. agents.<name>.file o identifica. |
skills/<name>/SKILL.md |
Uma skill. Todos os harnesses a carregam. |
memory/ |
A memória do projeto. |
tools/<name>.ts |
Ferramentas do projeto, uma por módulo. tools: as declara; todos os harnesses as executam. Consulte Ferramentas. |
harnesses/opencode/ |
Arquivos lidos apenas pelo harness padrão: opencode.jsonc, plugins/, tools/, commands/. opencode.config_dir aponta para aqui. |
Projetos criados antes de 2026-09 mantêm os agentes e as skills em .beeuni/opencode/ e a memória em .beeuni/memory/. O Beeuni lê os dois formatos.
A conexão entre as duas partes é o arquivo .md do agente. Uma chave do manifesto agents.<name> controla o arquivo indicado por agents.<name>.file ou agents/<name>.md quando file é omitido. Todos os campos comportamentais ficam apenas no frontmatter e no corpo desse arquivo .md, nunca em beeuni.yaml:
- prompt do sistema
model,modetemperature,top_psteps,permission
O bloco agents: do manifesto define apenas a governança: quais agentes podem ser iniciados e o que cada um pode acessar. O validador aplica essas regras. Ele rejeita um bloco de agente v2 que contenha qualquer campo comportamental, com um erro que aponta para o próprio arquivo .md do agente.
Localização e versões
Qualquer repositório com um manifesto válido na raiz é um projeto Beeuni. beeuni.yaml (v2, somente YAML) é o formato atual para novos projetos, criados pelo fluxo web “Create project” e por beeuni init. beeuni.toml (v1) ainda funciona para projetos existentes, mas a plataforma não aceita novos recursos v2 nesse formato. Consulte TOML legado para ver o esquema v1 e as etapas de migração de v1 para v2.
beeuni_version: 2 exige YAML — um arquivo .toml que declare beeuni_version: 2 não passa na validação. Um manifesto que declare uma versão superior a 2 é rejeitado diretamente, para que a plataforma nunca interprete incorretamente um campo futuro sem avisar. Chaves desconhecidas no nível superior são ignoradas, então você pode guardar seus próprios metadados no arquivo.
validateManifest() é a única etapa de validação usada por beeuni ship, pela verificação de mesclagem de solicitações de alteração e por beeuni validate. As mesmas regras se aplicam em todos os lugares, então tudo o que é mesclado em main tem uma estrutura válida. O esquema é público e gerado a partir do mesmo pacote:
beeuni.v2.schema.jsonbeeuni.v1.schema.jsonbeeuni.schema.json(seleciona o formato com base embeeuni_version)
Aponte um beeuni.yaml para o esquema v2 para validar no editor ou obtenha-o pela CLI:
# yaml-language-server: $schema=https://beeuni.ai/schema/beeuni.v2.schema.json
beeuni_version: 2
beeuni schema --version 2
Exemplo completo
beeuni_version: 2
default_agent: beeuni
project:
name: my-project
description: What this project is.
env:
required: [DATABASE_URL]
optional: [STRIPE_API_KEY, WEBHOOK_SLACK_SECRET]
sandbox:
templates:
- slug: ml
name: ML Development
dockerfile: Dockerfile.ml
cpu: 4
memory: 16
opencode:
config_dir: harnesses/opencode
agents:
beeuni:
file: agents/beeuni.md
connectors: all
secrets: all
beeuni_permissions: all
skills: all
release-bot:
file: agents/release-bot.md
sandbox: ml
connectors: [github]
beeuni_permissions: [project.gitops.push]
secrets: [GITHUB_AGENT_TOKEN]
triggers:
- slug: daily-digest
type: cron
agent: beeuni
cron: '0 0 9 * * 1-5'
timezone: America/Los_Angeles
prompt: |
Summarize yesterday's commits. Open a CR against main.
Chaves de nível superior
| Chave | Obrigatória | Observações |
|---|---|---|
beeuni_version |
sim | deve ser 2 |
default_agent |
sim | deve indicar um agente declarado e habilitado |
imports |
não | outros arquivos ou diretórios YAML cujos triggers, connectors, agents, apps e tools são mesclados a este manifesto. Consulte imports: |
tools |
não | as ferramentas disponíveis em todas as sessões: nome da ferramenta → caminho do módulo relativo ao repositório, ou beeuni:<name> para uma ferramenta Beeuni. Com uma chave tools, as sessões recebem apenas as ferramentas Beeuni listadas nela. Todos os harnesses as executam. Consulte tools: |
runtime |
não | "opencode" (padrão) ou "pi" — o harness do agente que uma sessão inicia dentro do sandbox; pi executa o harness experimental no processo, no daemon do sandbox, e lê os mesmos arquivos .md do agente e as mesmas skills. O sinalizador de recurso pi_harness do projeto seleciona harness experimental sem esta linha. O harness experimental precisa do sinalizador llm_gateway; sem ele, a sessão inicia o harness padrão. |
harnesses.pi.packages |
não | pacotes harness experimental carregados pelas sessões harness experimental do projeto. Consulte harnesses: |
pi.config_dir |
não | harnesses/pi e, depois, .beeuni/pi, se presente. Recursos nativos do harness experimental: settings.json, extensions/, skills/ e prompts/. |
project.name / project.description |
não | metadados de exibição; a plataforma não lê project.name para obter o nome de exibição do projeto |
env.required / env.optional |
não | nomes de variáveis de ambiente; required é apenas informativo e nunca é aplicado no início da sessão |
sandbox / sandbox.templates / sandbox.default |
não | imagem(ns) e hardware do sandbox |
opencode.config_dir |
não | harnesses/opencode padrão, seguido de .beeuni/opencode legado |
triggers |
não | lista de gatilhos cron, webhook e monitor |
connectors |
não | lista de definições de conectores |
policy.default_mode |
não | allow_all (padrão) ou risk; modo de aprovação de conectores para todo o projeto |
agents |
sim | mapa de governança de nomes para blocos; não pode estar vazio. Com imports, o mapa pode estar em um arquivo importado |
imports:
Divida um manifesto em vários arquivos YAML. Use essa opção quando beeuni.yaml ultrapassar uma tela: 30 gatilhos com prompts de várias linhas, um conector por equipe, um arquivo por grupo de agentes.
# beeuni.yaml
beeuni_version: 2
default_agent: beeuni
imports:
- triggers/ # a directory: every .yaml and .yml file below it
- agents.yaml # a single file
agents:
beeuni:
connectors: all
beeuni.yaml
agents.yaml
triggers/
reports/
weekly.yaml
monthly.yaml
dockets/
freedom-forever.yaml
# triggers/reports/weekly.yaml
triggers:
- slug: weekly-report
name: Cross-Sector Weekly Report
type: cron
agent: galileo
cron: "0 15 * * 0"
prompt: |-
Build the weekly report.
O arquivo raiz e suas importações formam uma configuração de projeto. Um gatilho em um arquivo pode indicar um agente declarado em outro.
Regras
- Um caminho é relativo à raiz do repositório.
.., caminhos absolutos e globs são rejeitados. - Uma importação de diretório inclui todos os arquivos
.yamle.ymlabaixo dele, em qualquer profundidade, ordenados pelo caminho. Os outros arquivos são ignorados. - Um arquivo importado declara
triggers,connectors,agents,apps,toolseimports. Todas as outras chaves (beeuni_version,default_agent,runtime,project,env,opencode,sandbox,policy,policies) permanecem no arquivo raiz. Se um arquivo importado definir uma delas, a validação falhará. - Um arquivo importado pode importar outros arquivos. O limite é de 8 níveis e 200 arquivos. Um ciclo é um erro. Um arquivo encontrado mais de uma vez é mesclado apenas uma vez.
- Um nome, um arquivo. Se um slug de acionador, slug de conector, nome de agente, nome de app ou nome de ferramenta for declarado em dois arquivos, ocorrerá um erro que identifica ambos. Nada é sobrescrito silenciosamente.
- As entradas são mescladas na ordem: primeiro o arquivo que importa e, em seguida, as importações na ordem listada.
Uma importação inválida faz todo o manifesto falhar, assim como um erro de sintaxe YAML. beeuni validate, beeuni ship e a verificação de mesclagem da solicitação de alteração também informam o erro antes que ele chegue a main:
imports: triggers "weekly-report" is declared in both triggers/a.yaml and triggers/b.yaml — one name, one file
As edições são feitas no arquivo que declara a entrada. Quando o dashboard, a API ou beeuni triggers enable|disable|rm altera um acionador, conector, agente ou app declarado em um arquivo importado, somente esse arquivo é gravado. O arquivo raiz não é regravado. Uma nova entrada é gravada no arquivo raiz. Mova-a manualmente para um arquivo importado se quiser que ela fique lá.
imports exige beeuni.yaml. Um manifesto beeuni.toml ignora a chave.
tools:
As ferramentas que uma sessão recebe, identificadas pelo nome. Há dois formatos possíveis para um valor:
| Formato | Significado |
|---|---|
beeuni:<name> |
Uma ferramenta Beeuni (web_search, image_search, scrape_webpage, memory, show), mantida pela Beeuni. A chave deve ser <name>. |
| Um caminho de módulo relativo ao repositório | Uma ferramenta do próprio projeto, em qualquer pasta. Se estiver sob o nome de uma ferramenta Beeuni, o módulo substitui a ferramenta Beeuni. |
tools:
web_search: beeuni:web_search
image_search: beeuni:image_search
scrape_webpage: beeuni:scrape_webpage
memory: tools/memory.ts # replaces the Beeuni memory tool
lookup_order: tools/lookup_order.ts
crm_note: integrations/crm/note.ts
harness padrão e harness experimental executam o mesmo módulo. O contrato do módulo, beeuni tools ls,
beeuni tools eject e a migração de harnesses/opencode/tools/ estão em
Tools.
Regra de seleção.
- Sem a chave
toolsno arquivo raiz nem em qualquer arquivo importado: as sessões recebem todas as cinco ferramentas Beeuni. Todo projeto criado antes de a lista existir continua com elas. - Com a chave
tools, mesmo vazia (tools: {}outools:com todas as linhas excluídas): as sessões recebem apenas as ferramentas Beeuni listadas, comobeeuni:<name>ou como caminho de módulo. Uma chavetoolsem um arquivo importado também conta.
Exclua uma linha beeuni:<name> para remover essa ferramenta de todos os agentes. Use
agents.<name>.tools para limitar uma
única agente.
Erros.
-
O nome deve estar em snake_case:
^[a-z][a-z0-9_]{0,63}$. -
Um nome de ferramenta do harness (
bash,read,write,edit,apply_patch,glob,grep,list,task,question,todowrite,webfetch,websearch,skill,lsp,invalid,execute,plan_exit,pty_*) é um erro. -
O caminho termina em
.ts,.js,.mts,.mjs,.ctsou.cjs. Não pode começar com/ou-, nem conter um segmento.ou... -
beeuni:<name>em outra chave é um erro. Sob o nome de uma ferramenta Beeuni, por exemplo,web_search: beeuni:image_search:tools.web_search: deve ser `beeuni:web_search` (a ferramenta Beeuni) ou um caminho relativo ao repositório para um módulo .ts ou .js (por exemplo, `tools/web_search.ts`) que a substitua. -
beeuni:<name>para um nome que não seja de uma ferramenta Beeuni, por exemplo,web_serch: beeuni:web_serch:tools.web_serch: deve ser um caminho relativo ao repositório para um módulo .ts ou .js (por exemplo, `tools/web_serch.ts`). `beeuni:<name>` nomes uma ferramenta Beeuni pelo próprio nome: `web_search: beeuni:web_search`, `image_search: beeuni:image_search`, `scrape_webpage: beeuni:scrape_webpage`, `memory: beeuni:memory`, `show: beeuni:show`. -
beeuni validatetambém informa sobre um módulo declarado que não existe. Um valorbeeuni:não precisa de arquivo.
Avisos. Um aviso nunca faz beeuni validate falhar.
-
Uma chave
toolsque não lista nenhuma das cinco ferramentas Beeuni:tools: as sessões deste projeto não recebem nenhuma ferramenta Beeuni (web_search, image_search, scrape_webpage, memory, show). Adicione `<name>: beeuni:<name>` para manter uma.Isso detecta se um projeto adiciona sua primeira ferramenta própria e remove as cinco por acidente.
-
O
toolsde um agente que menciona uma ferramenta Beeuni que o projeto não carrega:agents.beeuni.tools: "show" é uma ferramenta Beeuni que este projeto não carrega: adicione `show: beeuni:show` em `tools` no nível superior ou remova-a daqui.
project:
Metadados opcionais, voltados a pessoas: name e description. A plataforma não lê esta tabela para nenhuma finalidade — o nome de exibição de um projeto vem do próprio registro no banco de dados. Considere-a documentação para quem lê o repositório.
env:
Declara os nomes das variáveis de ambiente necessárias às sessões. Os valores ficam na página Environment variables do dashboard, nunca diretamente no manifesto. A plataforma os descriptografa e os injeta como variáveis de ambiente comuns no início da sessão.
env:
required: [DATABASE_URL]
optional: [STRIPE_API_KEY]
| Campo | Tipo | Observações |
|---|---|---|
required |
string[] |
Informativo. O dashboard solicita esses valores ao usuário, mas o início da sessão não é bloqueado se um valor estiver ausente. |
optional |
string[] |
Disponível para as sessões se definido. Pode estar ausente. |
Os nomes das variáveis de ambiente correspondem a ^[A-Z_][A-Z0-9_]*$. O Secrets Manager limita os nomes a 64 caracteres — um nome mais longo é aceito aqui, mas nunca poderá receber um valor. Nomes que começam com BEEUNI_ também nunca poderão receber um valor. Limite os nomes a 64 caracteres e evite o prefixo BEEUNI_. Contrato completo: Secrets.
sandbox: e sandbox.templates
Uma lista de imagens de sandbox nomeadas que podem ser iniciadas. Opcional — sem entradas, todas as sessões iniciam com a imagem padrão da plataforma. Cada modelo precisa ter exatamente um de dockerfile (relativo ao repositório) ou image (uma referência pública do Docker, com tag ou digest fixado).
sandbox:
templates:
- slug: ml
name: ML Development
dockerfile: Dockerfile.ml
cpu: 4
memory: 16
disk: 50
| Campo | Tipo | Padrão | Observações |
|---|---|---|---|
slug |
string | — | Obrigatório. Exclusivo por projeto. default é reservado. |
name |
string | slug | Rótulo exibido no seletor do painel. |
dockerfile |
string | — | Caminho relativo ao repositório. Mutuamente exclusivo com image. |
image |
string | — | Imagem Docker pública, fixada por tag ou digest. Mutuamente exclusiva com dockerfile. |
entrypoint |
string | própria da camada de runtime | Substitui o entrypoint do contêiner. |
cpu |
int | padrão do provedor | Núcleos de vCPU. Limite: 1–32. |
memory |
int | padrão do provedor | RAM em GiB. Limite: 1–128. |
disk |
int | padrão do provedor | Disco em GiB. Limite: 1–500. |
container_runtime |
bool | false |
Executa o Docker na sandbox com rede bridge + overlay. Consulte Runtime. |
Cada valor deve ser um inteiro positivo. Um valor abaixo do mínimo falha na validação com um erro. Um valor acima do máximo passa com um aviso e, em seguida, é limitado em tempo de execução. GPUs não são compatíveis — declarar gpu gera um aviso, não um erro. Consulte Runtime para saber o que a camada de runtime injeta sobre a sua imagem.
sandbox.default
Defina default em sandbox para tornar um template o padrão de todo o projeto. Todas as sessões, triggers e canais passam a inicializá-lo sem especificar um slug.
sandbox:
default: dev
templates:
- slug: dev
dockerfile: Dockerfile.dev
default deve indicar um template declarado neste manifesto ou o valor reservado "default" para a imagem da plataforma.
Um agente pode selecionar seu ambiente com agents.<name>.sandbox. O valor deve indicar um template do manifesto ou do painel, ou "default".
agents:
researcher:
sandbox: ml
A resolução do template da sessão segue esta ordem:
sandbox_slugexplícito da sessão.sandboxdo agente selecionado.sandbox.defaultdo projeto."default"da plataforma.
Triggers de cron, triggers de webhook, agendamentos e canais usam o template do agente selecionado.
Uma alteração na especificação (cpu, memory, disk, container_runtime ou na própria imagem) recria o snapshot do projeto. O novo tamanho se aplica à próxima sessão, não a uma sessão em andamento.
opencode:
Onde fica o diretório de configuração do harness padrão. Opcional, com um valor padrão.
opencode:
config_dir: harnesses/opencode
| Campo | Tipo | Padrão | Observações |
|---|---|---|---|
config_dir |
string | harnesses/opencode, depois .beeuni/opencode |
Diretório relativo ao repositório. |
Quando config_dir não está definido, o Beeuni usa o primeiro entre harnesses/opencode e .beeuni/opencode que contenha um opencode.json ou opencode.jsonc. Esse diretório contém apenas os arquivos lidos pelo harness padrão: opencode.jsonc, plugins/, tools/ e commands/. Os agentes e as skills ficam na raiz do repositório, em agents/ e skills/. opencode.jsonc continua sendo o registro nativo do harness padrão para plugins, servidores MCP, provedores e permissões — não duplique essas configurações no manifesto. Consulte Agents.
harnesses:
Configurações específicas de cada harness. pi.config_dir aponta para um diretório relativo ao repositório com configurações nativas do harness experimental (padrão: harnesses/pi, depois .beeuni/pi). O diretório é importado durante a inicialização do harness experimental. pi.packages é separado: ele instala pacotes por agente a partir de harnesses.pi.packages do manifesto. Atualmente, existe uma chave de pacote: pi.packages, os pacotes do harness experimental carregados por todas as sessões do harness experimental deste projeto (runtime: pi ou a flag pi_harness). Um pacote pode ser qualquer coisa de packages: extensões (ferramentas, hooks, comandos), além das skills e dos prompts incluídos no pacote.
runtime: pi
harnesses:
pi:
packages:
- npm:pi-web-access@0.30.0 # pinned extension version
- source: npm:pi-mcp-adapter@2.36.0
extensions: ["extensions/*.ts"] # load only these files of the package
skills: [] # load none of its skills
- ./harnesses/pi/audit.ts # an extension file in this repository
| Formato da entrada | Significado |
|---|---|
npm:<name>@<x.y.z> |
Um pacote npm em uma versão exata. Um intervalo de versões ou a ausência de versão causa falha na validação. |
./<path> |
Um arquivo de extensão ou diretório de pacote neste repositório. Não pode sair do repositório usando ... |
{ source, extensions, skills, prompts, themes } |
A mesma origem com os filtros de inclusão/exclusão próprios do harness experimental. Se nenhum filtro for especificado, tudo é carregado; [] não carrega nada. |
No máximo 20 entradas. Fontes Git são rejeitadas.
Por agente
Um agente pode adicionar seus próprios pacotes e remover pacotes de nível superior, em agents.<name>.harnesses:
harnesses:
pi:
packages: [npm:pi-web-access@0.30.0] # every agent
agents:
researcher:
harnesses:
pi:
packages: [npm:@juicesharp/rpiv-todo@2.11.0] # researcher only
reviewer:
harnesses:
pi:
exclude: [pi-web-access] # reviewer loads no web tools
- Os pacotes de um agente são a lista de nível superior, menos os itens em
exclude, mais os itens empackages. - Se uma entrada de um agente corresponder a um pacote também listado no nível superior, ela substitui a entrada de nível superior para esse agente (outra versão ou outros filtros).
excludelista nomes de pacotes (pi-web-access,@scope/name) ou caminhos./tal como escritos na lista de nível superior. Nunca recebe uma versão.- Cada lista de pacotes distinta é compilada uma vez. Agentes com a mesma lista compartilham a compilação.
- Os pacotes pertencem ao agente com o qual uma sessão é iniciada. Um subagente iniciado por outro agente com a ferramenta
taskusa apenas as ferramentas de espaço de trabalho padrão (bash,read,write,edit,glob,grep), e não os próprios pacotes nem os do agente principal; os hooks de extensão do agente principal ainda se aplicam às chamadas dele. Inicie uma sessão com esse agente para usar os pacotes dele.
Como os pacotes chegam a uma sessão:
- Ao mesclar a solicitação de alteração que edita esta lista, os pacotes são compilados uma vez para a plataforma de sandbox, com os scripts de instalação desativados. Cada extensão é pré-compilada em um único arquivo minificado. A compilação mantém os outros arquivos do pacote, exceto o código já contido nesse arquivo, as declarações de tipos, os mapas de origem e os arquivos README e CHANGELOG da raiz. Projetos com a mesma lista compartilham a compilação.
- Uma sessão nova ou reiniciada baixa a compilação enquanto clona o repositório e carrega cada extensão diretamente. Uma sessão nunca executa
npm installnem compila um pacote. - Um pacote que não pode ser pré-compilado (por exemplo, um cujo
pi.extensionsusa globs) ainda funciona: a sessão o carrega diretamente dos pacotes instalados, o que leva mais tempo. Se o código de um pacote ler um dos arquivos que a compilação exclui, adicione um filtroextensionsà entrada: assim, a sessão também o carregará diretamente dos pacotes instalados. - Uma sessão iniciada antes da compilação existir é inicializada sem os pacotes do projeto e inicia a compilação; a próxima sessão terá os pacotes.
O Beeuni também instala um conjunto de pacotes do sistema em todas as sessões do harness experimental. Uma entrada do projeto para o mesmo pacote substitui a versão do sistema. Um repositório também pode conter extensões nativas do harness experimental em .pi/extensions/*.ts; o harness experimental as carrega sem uma entrada no manifesto.
As extensões são executadas sem uma interface de terminal: ferramentas, hooks e comandos funcionam; widgets exclusivos do terminal não fazem nada.
triggers:
Uma lista de definições de cron, webhook e monitoramento. Cada entrada inicia uma sessão que executa prompt como primeira mensagem.
triggers:
- slug: daily-digest
type: cron
cron: '0 0 9 * * 1-5'
prompt: Summarize yesterday's commits.
| Campo | Obrigatório | Padrão | Observações |
|---|---|---|---|
slug |
sim | — | [a-z0-9][a-z0-9_-]{0,127}, exclusivo entre os gatilhos. |
type |
sim | — | cron, webhook ou monitor (experimental). |
prompt |
sim | — | Não vazio. Oferece suporte a modelos. |
name |
não | slug | Nome legível. |
agent |
não | default_agent |
Deve indicar uma chave em agents:. Omita para usar default_agent; não escreva o literal default. |
enabled |
não | true |
false ignora a entrada. |
model |
não | resolvido no momento da execução | Formato wire provider/model. Fixa a sessão executada nesse modelo. Consulte Models. |
session_mode |
não | fresh |
fresh, reuse, pinned ou keyed. |
session_id |
obrigatório para pinned |
— | Sessão exata para solicitar novamente. |
Os gatilhos Cron precisam de exatamente um entre cron (uma expressão de 6 campos) ou run_at (um timestamp ISO-8601 único), além de timezone como nome IANA. Os gatilhos de webhook precisam de secret_env, o nome de um segredo que usa a entrega broker com o consumidor connector. Os gatilhos de monitor precisam de run (um comando relativo ao repositório) e mode (poll ou stream), e rejeitam todos os campos de Cron e webhook. Para ver a referência completa dos campos, a configuração de credenciais, os modelos de payload, os endpoints e a estratégia de sessão, consulte Triggers.
connectors:
Uma lista de ferramentas externas que um agente pode chamar. A definição fica no git; as credenciais ficam na plataforma, nunca no manifesto. Consulte Connectors para entender o modelo conceitual.
connectors:
- slug: gmail-read
name: Gmail read only
provider: pipedream
app: gmail
authorization_strategy: user
policies:
- match: search_email
action: always_run
| Campo | Obrigatório | Observações |
|---|---|---|
slug |
sim | [a-z0-9][a-z0-9_-]{0,127}, exclusivo entre os conectores. |
provider |
sim | pipedream, mcp, openapi, postman, graphql, http ou channel. |
name |
não | Nome de exibição. O padrão é o slug. |
authorization_strategy |
não | project ou user. O padrão é project quando omitido. Uma estratégia de projeto usa as conexões ativas do projeto. Uma estratégia de usuário usa apenas a conexão do membro que está agindo. |
enabled |
não | O padrão é true. |
credential |
não | Apenas shared é compatível. O modo descontinuado per_user gera um erro fatal. |
sensitive |
não | O padrão é false. true define require_approval como padrão para ações sem correspondência, inclusive leituras. As regras explícitas do projeto e do conector ainda são aplicadas primeiro. |
Campos específicos do provedor:
| Provedor | Campo obrigatório | Observações |
|---|---|---|
pipedream |
app |
account é opcional; o padrão é slug. |
mcp |
url |
transport: http (padrão) ou sse. |
openapi |
spec |
Uma URL ou um caminho relativo ao repositório. |
postman |
spec |
Uma URL ou caminho de Collection JSON, um manifesto .postman/api ou uma URL de workspace do Postman. |
graphql |
endpoint |
spec é opcional (SDL). |
http |
base_url |
spec é opcional. |
channel |
platform |
slack, teams, email ou voice. |
computer |
— | Gerenciado pela API. Não é possível declará-lo manualmente. Cada computador conectado é uma de suas contas. Consulte Computers. |
Os conectores channel raramente precisam de uma entrada escrita manualmente — conectar um canal pelo painel cria uma para você. Consulte Slack & channels. Os slugs beeuni_slack, beeuni_teams, beeuni_email e computer pertencem à plataforma; usar um deles com outro provedor causa um erro de validação. O conector computer é criado quando o primeiro membro conecta um computador, pois os IDs de máquina são identidades do plano de controle da conta e não devem constar no manifesto.
connectors.auth: opcional, para provedores diferentes de pipedream. type é bearer, basic, custom, api_key, oauth1, hmac, aws_sigv4, mtls ou none (padrão). oauth1 é restrito aos provedores openapi, postman e http. in é header (padrão), query ou cookie. name é obrigatório quando type é custom ou api_key.
connectors.policies: uma lista de pares {match, action}. match é um padrão glob para nomes de ferramentas. action é always_run, require_approval ou block. As políticas pertencem ao conector. Todas as conexões desse conector usam as mesmas políticas.
policy.default_mode: uma chave de nível superior, separada de connectors:, que define o modo de aprovação de conectores para todo o projeto. Aceita allow_all (padrão; toda ferramenta sem correspondência é executada) ou risk (exige aprovação para chamadas sem correspondência de escrita e destrutivas). Defina-a com beeuni connectors policy set --default <risk|allow_all> — consulte CLI.
Canais
A v2 remove channels: do esquema. O roteamento de canais para agentes (Slack, Microsoft Teams, e-mail e voz atualmente) é um estado operacional ativo, não uma configuração declarativa. Você o define na página Canais do painel ou por comandos de chat, o mesmo limite que mantém as credenciais fora do git. A conexão de um canal ainda cria uma entrada connectors com provider: channel para o agente chamar. Consulte Slack e canais. A tabela [[channels]] da v1 é abordada em TOML legado.
agents:
Um mapa de nomes para blocos, indexado pelo nome do agente. Esse mapa serve apenas à governança — ele concede o que um agente pode acessar, nunca o que ele diz ou faz.
Este bloco é a segunda das duas vinculações: um principal recebe funções do Beeuni, e um agente também carrega as permissões do Beeuni declaradas aqui. Uma sessão só pode fazer o que ambas permitem. Consulte Um vocabulário, duas vinculações.
default_agent: beeuni
agents:
beeuni:
file: agents/beeuni.md
connectors: all
secrets: all
beeuni_permissions: all
skills: all
release-bot:
file: agents/release-bot.md
connectors: [github]
connectors_required: [github]
beeuni_permissions: [project.gitops.push]
secrets: [GITHUB_AGENT_TOKEN]
| Campo | Padrão | Observações |
|---|---|---|
| (chave do mapa) | — | [a-z0-9][a-z0-9_-]{0,127}, exclusivo por projeto. Sem file, também é o nome do arquivo .md. |
file |
agents/<name>.md |
Caminho relativo ao repositório do .md do agente. Consulte O arquivo do agente. |
enabled |
true |
false trata o agente como não declarado — a plataforma não o iniciará. |
connectors |
none |
Quais slugs de conectores este agente pode chamar. all significa todos os conectores. |
connectors_required |
none |
Obsoleto: analisado e ignorado. A inicialização do sandbox não depende mais de um conector; uma chamada a um conector sem conexão retorna connector_not_connected com um link para conectar. Ainda deve ser um subconjunto de connectors, quando presente. |
secrets |
none |
Quais segredos do projeto este agente recebe como variáveis de ambiente do sandbox. Renomeado de env da v1. |
beeuni_permissions |
none |
Quais permissões do Beeuni (ações do projeto) este agente pode exercer pela CLI, pela API ou pelo git. all significa todas as permissões do projeto, ainda limitadas pela função máxima do agente e sem incluir as permissões exclusivas de humanos. beeuni_cli é a forma obsoleta: ainda aceita, com um aviso de validação; definir ambas com valores diferentes é um erro. |
skills |
none |
Quais habilidades este agente pode carregar. |
apps |
none |
Quais slugs de Beeuni App este agente pode abrir quando o App está restricted ou private. all significa todos os Apps do projeto. Consulte Agentes e Apps. |
tools |
all |
Quais ferramentas este agente pode usar: ferramentas do harness, do Beeuni e do projeto. all, none, uma lista (somente essas) ou { exclude: [...] } (todas, exceto essas). A forma de mapa anterior { bash: false } ainda funciona. Diferentemente das concessões acima, se tools for omitido, todas as ferramentas serão permitidas. Consulte Quem pode usar cada ferramenta. |
repository_access |
true |
Se novas sessões recebem o repositório do projeto. false desativa a entrega do repositório e o acesso a ele por meio das credenciais da sessão. As sessões existentes mantêm a política salva. |
A v2 nega por padrão: se connectors, secrets, beeuni_permissions, skills ou apps for omitido em um agente declarado, o valor será none. Conceda explicitamente todas as permissões necessárias ao agente, como faz o agente beeuni inicial acima. Um projeto que migra da v1 precisa conceder tudo novamente manualmente — na v1, o padrão de env (segredos), quando omitido, é all, o oposto da v2.
connectors_personal continua sendo um alias de entrada obsoleto para
connectors_required. Novos manifestos devem usar connectors_required. O valor authorization_strategy do conector determina se a autorização pertence ao projeto ou ao membro.
As concessões de beeuni_permissions vêm de um conjunto fixo de permissões no escopo do projeto (project.read, project.gitops.push, project.gitops.merge, project.gitops.ref.any, project.trigger.*, project.secret.*, project.connector.* e outras). As permissões no escopo da conta — member.*, billing.*, project.create — nunca podem ser concedidas a um agente. Execute beeuni validate --scopes de dentro de uma sessão para exibir a lista atual de permissões concedíveis.
O arquivo do agente
agents.<name>.file indica o .md do agente, relativo à raiz do repositório.
agents:
support:
file: agents/support.md
- O caminho deve terminar em
.md. - O caminho não pode começar com
/nem-. Não pode conter um segmento.ou.., nem um segmento vazio. - Cada segmento pode conter apenas letras, dígitos,
_,-,.e espaços. - Quando
fileé omitido, o Beeuni lêagents/<name>.mde depois.beeuni/opencode/agents/<name>.md. Quandoopencode.config_direstá definido, o segundo caminho é<config_dir>/agents/<name>.md. - Quando o painel salva um agente que tem um
.md, ele gravafilecom esse caminho. - A API recusa uma solicitação que altere
file(400, códigoinvalid_config). Para mover um agente, mova seu.mde atualizefileembeeuni.yamlno mesmo commit.
beeuni validate e a verificação de mesclagem da solicitação de alteração rejeitam um file inválido com um erro em agents.<name>.file.
Quando as alterações de configuração entram em vigor
- Uma edição de manifesto,
agents/,skills/ou do diretório de configuração do harness padrão só entra em vigor depois que uma solicitação de alteração é mesclada emmain. As sessões e os gatilhos leem a ramificação padrão, não as ramificações de sessão. - Uma alteração no cron ou no webhook de um gatilho é detectada pelo agendador em segundos após a mesclagem.
- Uma alteração na imagem do sandbox ou no hardware recria o snapshot. A nova especificação se aplica à próxima sessão, não à atual.
- Uma alteração no valor de um segredo no painel é resolvida no momento da criação do sandbox. Ela se aplica à próxima sessão, não a uma sessão em execução.
Regras de ida e volta
As edições no painel são operações de leitura-modificação-gravação no arquivo que declara a entrada: beeuni.yaml ou um arquivo importado. Para manter as diferenças organizadas entre as edições na interface e durante a sessão:
- Mantenha
beeuni_versioncomo a primeira chave. - Dentro de uma entrada de gatilho, ordene os campos
slug,name,type,agent,enabled, depois os campos específicos do tipo e, por último,prompt. - Se você adicionar um gatilho de webhook antes de definir o segredo, liste o nome do segredo em
env.optional. Mantenha o gatilhoenabled: falseaté inserir o valor.
Acesso ao repositório
Defina agents.<name>.repository_access como false para agentes que não precisam dos arquivos de origem do projeto.
Eles ainda podem criar arquivos no sandbox e usar as ferramentas, os segredos e os conectores concedidos.
Defina como true para agentes que precisam do repositório. As permissões do Git permanecem separadas.
Altere essa configuração no editor do agente em Workspace → Project repository access.
A configuração se aplica a novas sessões. As sessões existentes mantêm a política salva, inclusive após a substituição do runtime.
agents:
support:
repository_access: false
engineer:
repository_access: true
O campo obsoleto workspace continua legível: branch significa true, e runtime significa false.
As configurações legadas de read continuam rejeitando a criação de sessões até que você substitua o campo por um booleano explícito.
Não existe um modo de repositório somente leitura. Campos antigos e novos conflitantes são rejeitados.
O editor e o SDK enviam repository_access. Para acesso desativado, a API também armazena workspace: runtime como um espelho de compatibilidade. Isso preserva a restrição para réplicas de API mais antigas durante a implantação ou a reversão. As leituras da API omitem o espelho. Manifestos escritos manualmente usando apenas repository_access exigem a API atualizada.