Sinalizadores de recursos
Ative uma superfície do Beeuni em um projeto e saiba o que cada sinalizador controla.
Um sinalizador de recurso ativa uma superfície do Beeuni em um projeto. Qualquer superfície pode ser lançada atrás de um sinalizador — experimental, beta ou totalmente estável. “Experimental” é um selo de estabilidade de um sinalizador, não o nome do sistema.
Os sinalizadores são específicos de cada projeto. Ativar um sinalizador em um projeto não altera nada em outro projeto nem para outras contas.
Ativar um sinalizador
- Abra Settings → Feature flags. A guia lista todos os sinalizadores compatíveis com a plataforma.
- Leia a linha: nome do sinalizador, selo de estabilidade, uma frase de descrição e a origem —
Default on,Default offouOverridden for this project. - Use o botão. A alteração é aplicada imediatamente ao projeto atual.
Você precisa da permissão project.settings.write do projeto. Para qualquer outra pessoa que fizer a chamada, a rota retorna
403.
Pela CLI
Os mesmos controles estão disponíveis para scripts e agentes por meio de beeuni projects features:
beeuni projects features # every flag: key, state, origin
beeuni projects features enable reminders
beeuni projects features disable reminders
beeuni projects features reset reminders # drop the override; follow the platform default
beeuni projects features --json # the full catalog as JSON
Adicione --project <id> para agir em um projeto diferente do projeto vinculado ou padrão. Um sinalizador que a plataforma marca como indisponível permanece desativado, independentemente da configuração do projeto; a CLI exibe isso como n/a / unavailable.
Selos de estabilidade
O selo descreve o contrato, não o controle. Um sinalizador stable ainda exige adesão explícita: apps é estável e continua desativado por padrão.
| Selo | Significado |
|---|---|
| Experimental | A superfície e seu contrato ainda podem mudar. |
| Beta | A superfície funciona e sua forma está se consolidando. |
| Stable | O contrato se mantém. O sinalizador continua opcional. |
Como um sinalizador é aplicado
Cada sinalizador declara um modo de aplicação.
| Modo | O que o servidor faz quando o sinalizador está desativado |
|---|---|
routes |
A superfície HTTP rejeita a solicitação com 403. |
behavioral |
O comportamento não ocorre — nenhum conector é materializado, nenhuma variável de ambiente é injetada e nenhum agente é registrado. |
ui-only |
O servidor deliberadamente não aplica o sinalizador. Ele oculta apenas a superfície do cliente. |
Uma rejeição routes é idêntica em todos os lugares:
{
"error": "Apps is not enabled for this project. Contact Beeuni to enable it.",
"code": "feature_disabled",
"feature": "apps"
}
A string error indica a lista de sinalizadores, não uma guia específica. A lista fica na guia Experimental de Settings.
Faça a verificação com code, nunca com o texto da mensagem. O SDK exporta isFeatureDisabledError(error) e featureDisabledKey(error) exatamente para isso.
Todos os sinalizadores
Ordem do registro — a mesma exibida em Settings → Feature flags.
Apps são ativados por projeto pelo Beeuni. Entre em contato com o Beeuni para solicitar acesso. Após a ativação, Settings mostra Managed by Beeuni.
| Chave | Nome | Estabilidade | Padrão |
|---|---|---|---|
marketplace |
Marketplace | Beta | Ativado |
connectors_api_discover |
Connectors API Discover | Experimental | Desativado |
agentmail_email |
AgentMail Email | Experimental | Desativado |
llm_gateway |
LLM Gateway | Experimental | Ativado |
meta_agent |
Meta Agent | Experimental | Desativado |
apps |
Apps | Stable | Desativado |
monitors |
Monitors | Experimental | Desativado |
reminders |
Reminders | Beta | Desativado |
warm_sessions |
Warm Sessions | Beta | Ativado |
secrets_egress |
Network-Enforced Secrets | Experimental | Ativado |
pi_harness |
Pi Harness | Experimental | Desativado |
O que cada sinalizador controla
marketplace— pesquisar e instalar skills de registros da comunidade e de fornecedores.connectors_api_discover— pesquisar superfícies diretas de API, MCP, GraphQL, CLI e Postman ao lado de apps OAuth gerenciados. Consulte Connectors.agentmail_email— atribuir conexões de caixa de entrada AgentMail para que emails recebidos iniciem e deem continuidade a sessões.llm_gateway— encaminhar o projeto pelo gateway LLM gerenciado do Beeuni. Consulte Models.meta_agent— adicionar um agente coordenador mantido pela plataforma, que inicia e gerencia sessões especializadas.apps— implantar sites estáticos, bundles, Dockerfiles e imagens OCI em URLs serverless estáveis. Consulte Apps.monitors— executar monitores 24 horas por dia, 7 dias por semana, a partir do seu repositório, que disparam eventos de acionamento nas sessões. Consulte Triggers.reminders— lembretes agendados que solicitam novamente uma sessão, uma vez ou repetidamente. Quando desativadas, as rotas de lembretes retornamfeature_disablede os lembretes existentes não são acionados. Consulte Reminders.warm_sessions— manter um sandbox iniciado enquanto um projeto estiver aberto, para que uma nova sessão comece sem inicialização a frio.secrets_egress— oferecer aplicação de rede para um segredo: o sandbox mantém um identificador, e o Beeuni substitui o valor real apenas em solicitações a hosts aprovados. Consulte Secrets.pi_harness— executar as sessões deste projeto no harness de agente pi, dentro do sandbox de sessão comum (BEEUNI_HARNESS=pi). Ativado: toda sessão nova ou reiniciada inicia o pi, independentemente do que o manifesto especificar. Desativado: o manifesto decide —runtime: piainda inicia o pi; qualquer outra opção inicia o runtime padrão. O pi chama modelos apenas pelo gateway LLM: comllm_gatewaydesativado, todas as sessões iniciam o runtime padrão, independentemente deste sinalizador ou do manifesto. O layout do repositório, os agentes e as skills são os mesmos nas duas opções; uma sessão em execução mantém seu harness até ser reiniciada ou retomada. Os subagentes funcionam no pi: o agente delega com a ferramentataskparageneral,explore(somente leitura) ou qualquer agente do projeto commode: subagentem seu.md, e a transcrição mostra no lugar certo as etapas de cada subagente. As sessões pi também carregam pacotes pi.dev: consulteharnesses:. O pi não oferece todos os recursos de sessão que o runtime padrão oferece: consulte a matriz em Harnesses.
Sinalizadores que se tornaram padrão
Um recurso que se tornou padrão está ativado em todos os projetos e não tem controle.
- Agentes como principais é um comportamento padrão sem controle. Uma sessão de agente atua como o próprio agente — com as permissões Beeuni dentro dos limites de sua função, seja quem for que a execute. Consulte Agent permissions.
- Review Center saiu do sistema de sinalizadores. A página Review, a linha Review na barra lateral e a linha na paleta de comandos aparecem em todos os projetos; as permissões
project.review.readeproject.review.actcontinuam se aplicando.review_centernão é mais uma chave de sinalizador:PATCH /v1/projects/:id/featuresretorna400Unknown feature flag, ebeeuni projects features enable review_centerprints that error and exits1. Uma substituição armazenada de antes dessa mudança não tem efeito. - Computers saiu do sistema de sinalizadores. Todos os membros podem conectar seu próprio computador pela barra lateral do projeto; a configuração
TUNNEL_ENABLEDda plataforma é o único controle.agent_tunnelnão é mais uma chave de sinalizador:PATCH /v1/projects/:id/featuresretorna400Unknown feature flag. Consulte Computers. - Microsoft Teams saiu do sistema de sinalizadores. Todos os projetos podem conectar o Teams em Connectors → Channels; um administrador do locatário ainda precisa autorizar uma vez, ou o projeto pode trazer seu próprio bot.
teamsnão é mais uma chave de sinalizador:PATCH /v1/projects/:id/featuresretorna400Unknown feature flag. Uma substituição armazenada de antes dessa mudança não tem efeito. Consulte Microsoft Teams.
Efeitos colaterais de um controle
Alguns sinalizadores fazem o estado da plataforma convergir depois que a gravação é confirmada.
| Sinalizador | Efeito após a alteração |
|---|---|
agentmail_email |
O Beeuni executa novamente a materialização do conector de canal, para que o conector apareça ou desapareça com o sinalizador. |
llm_gateway |
O Beeuni propaga o novo modo de provedor para os sandboxes ativos. |
Os efeitos são tarefas de convergência, não fazem parte do sucesso da alteração. A resposta da API não espera que sejam concluídas. Cada efeito é repetido uma vez, e os reconciliadores responsáveis são idempotentes e executados novamente em suas verificações periódicas.
Ler e definir um sinalizador no código
Leia o estado efetivo por projeto nos detalhes do projeto ou pelo hook do React:
import { useFeatureFlag } from '@beeuni/sdk/react';
function AppsNavItem({ projectId }: { projectId: string }) {
const apps = useFeatureFlag(projectId, 'apps');
if (!apps.enabled) return null;
return <Link href={`/projects/${projectId}/apps`}>Apps</Link>;
}
enabled será true somente quando o servidor tiver respondido exatamente true. Um ID de projeto ausente, uma consulta em andamento ou um erro resultam em false. Em caso de dúvida, bloqueie o acesso.
Defina a substituição do projeto com o cliente:
const p = beeuni.project(projectId);
await p.updateFeatureFlag('apps', true); // turn it on for this project
await p.updateFeatureFlag('apps', null); // clear the override, inherit the default
updateFeatureFlag chama PATCH /v1/projects/:id/features. feature é uma das opções FEATURE_FLAG_KEYS, exportadas de @beeuni/sdk e tipadas como FeatureFlagKey. Consulte a referência do SDK.
Trate um recurso desativado pelo código, não pela mensagem:
import { featureDisabledKey, isFeatureDisabledError } from '@beeuni/sdk';
try {
await beeuni.project(projectId).apps.list();
} catch (error) {
if (isFeatureDisabledError(error)) {
console.log(`${featureDisabledKey(error)} is off for this project`);
}
}