Wazuh MCP Server

Operações de segurança com inteligência artificial usando Wazuh SIEM + Claude Desktop. Detecção de ameaças em linguagem natural, resposta automatizada a incidentes e conformidade.

Documentação

Servidor MCP Wazuh

Um servidor Model Context Protocol (MCP) para o SIEM Wazuh.

Permite que um cliente MCP — Claude, Open WebUI com um modelo local, ou qualquer cliente que fale Streamable HTTP — consulte alertas, agentes, vulnerabilidades e dados de conformidade, e envie respostas ativas, com controle de acesso baseado em escopo e registro de auditoria.

CI Security Audit Release License: MIT

Python 3.11+ MCP 2026-07-28 Wazuh 4.8.0–4.14.7 GHCR image

Início Rápido · Clientes · Ferramentas · Segurança · Configuração · Documentação · Changelog · Atualização


Visão Geral

  • 55 ferramentas em 8 conjuntos de ferramentas: alertas, agentes, vulnerabilidades, análise de ameaças, conformidade (PCI-DSS, HIPAA, SOX, GDPR, NIST, ISO 27001:2022), saúde do gerenciador/cluster e resposta ativa com verificação e reversão. Também 5 prompts guiados, 6 recursos e 3 modelos de recursos.
  • Somente leitura por padrão. As 14 ferramentas que alteram estado exigem o escopo wazuh:write, que nunca é concedido implicitamente.
  • Transporte MCP: Streamable HTTP em /mcp. Atende à revisão de protocolo 2026-07-28 (solicitações sem estado) e ao handshake initialize para 2025-11-25, 2025-06-18, 2025-03-26 e 2024-11-05. O endpoint legado HTTP+SSE /sse retorna 410 Gone.
  • Autenticação: tokens de portador gerados a partir de uma chave de API; OAuth 2.0 (código de autorização + PKCE) com login por chave de API ou em um provedor OpenID Connect (Entra ID, Google Workspace, Okta, Keycloak); ou sem autenticação para desenvolvimento local.
  • Implantação: Docker Compose ou uma imagem multi-arquitetura publicada; Redis opcional para sessões multi-instância; roteamento multi-cluster opcional.
  • Modelos locais: uma pilha vLLM + Open WebUI (compose.local-llm.yml) e filtragem de conjuntos de ferramentas para modelos pequenos. A única ferramenta que chama um serviço fora da sua implantação Wazuh é o opcional search_external_context (You.com), que pode ser desabilitado individualmente.

Versões Wazuh suportadas: 4.8.0 até 4.14.7. Ferramentas de alerta, vulnerabilidade e conformidade baseadas em alertas precisam do Wazuh Indexer. Consulte WAZUH_COMPATIBILITY.md.


Início Rápido

Requer Docker com Compose v2 e um usuário da API do Wazuh Manager.

git clone https://github.com/gensecaihq/Wazuh-MCP-Server.git
cd Wazuh-MCP-Server
cp .env.example .env

Defina a conexão Wazuh em .env:

WAZUH_HOST=your-wazuh-manager
WAZUH_USER=your-api-user
WAZUH_PASS=your-api-password

# Needed for alert, vulnerability and alert-backed compliance tools
WAZUH_INDEXER_HOST=your-wazuh-indexer
WAZUH_INDEXER_USER=your-indexer-user
WAZUH_INDEXER_PASS=your-indexer-password

O certificado TLS do Manager é verificado. Uma instalação padrão do Wazuh usa um certificado de API autoassinado que não pode passar na verificação, então reemita-o para o seu host e defina WAZUH_CA_BUNDLE, ou, para um primeiro teste, adicione WAZUH_ALLOW_SELF_SIGNED=true (conecta sem verificação; registrado na inicialização). Detalhes: TLS do Manager.

Gere o segredo de assinatura e uma chave de API. compose.yml executa o servidor com ENVIRONMENT=production, que se recusa a iniciar sem AUTH_SECRET_KEY:

echo "AUTH_SECRET_KEY=$(openssl rand -hex 32)" >> .env
echo "MCP_API_KEY=wazuh_$(openssl rand -base64 32 | tr '+/' '-_' | tr -d '=')" >> .env

Inicie o servidor e verifique-o:

docker compose up -d
curl http://localhost:3000/health     # liveness
curl http://localhost:3000/ready      # checks Manager/Indexer reachability

Troque a chave de API por um token de portador (válido por TOKEN_LIFETIME_HOURS, padrão 24):

curl -s -X POST http://localhost:3000/auth/token -H 'Content-Type: application/json' \
  -d "{\"api_key\": \"$(grep ^MCP_API_KEY= .env | cut -d= -f2)\"}"

A chave é somente leitura. Para permitir ferramentas de resposta ativa, adicione MCP_API_KEY_SCOPES="wazuh:read wazuh:write" a .env, recrie o contêiner com docker compose up -d (restart mantém o ambiente antigo) e crie um novo token.

O Compose publica a porta em 127.0.0.1 apenas. O servidor fala HTTP simples; coloque um proxy reverso com terminação TLS na frente antes de expô-lo (defina MCP_BIND para alterar o endereço de bind do host).

python3 deploy.py (ou deploy.bat no Windows) executa as mesmas etapas, gerando AUTH_SECRET_KEY e MCP_API_KEY se estiverem ausentes.

Imagem pré-construída

Imagens multi-arquitetura (amd64, arm64) são publicadas no GitHub Container Registry e podem ser baixadas sem login:

docker pull ghcr.io/gensecaihq/wazuh-mcp-server:latest   # tracks main
docker pull ghcr.io/gensecaihq/wazuh-mcp-server:5.0.0    # latest tagged release

latest é construída a partir de main e pode incluir alterações listadas sob Não lançado no changelog. Imagens de lançamento são marcadas com 5.0.0, 5.0 e v5.0.0 (4.3.0 e anteriores não têm tag com prefixo v). Atualizando da versão 4.x: leia UPGRADING.md primeiro.

docker run -d --name wazuh-mcp-server --env-file .env -e MCP_HOST=0.0.0.0 -e ENVIRONMENT=production \
  -p 127.0.0.1:3000:3000 ghcr.io/gensecaihq/wazuh-mcp-server:latest

MCP_HOST=0.0.0.0 é necessário dentro de um contêiner porque .env.example define MCP_HOST=127.0.0.1 para instalações bare-metal. -e tem precedência sobre --env-file, então ENVIRONMENT=production é mantido mesmo se o seu .env definir outro valor.


Conectando Clientes

Todos os clientes usam o endpoint Streamable HTTP https://<your-host>/mcp.

ClienteModo de autenticaçãoComo autentica
Conectores personalizados Claude (claude.ai, Claude Desktop)oauthCódigo de autorização OAuth com PKCE. O servidor pré-registra um cliente público, claude-desktop, para as URLs de retorno de chamada do Claude. Os usuários entram na página /oauth/authorize do servidor com uma chave de API wazuh_ (a concessão é limitada aos escopos dessa chave), ou no seu provedor OpenID Connect quando OAUTH_IDP_ISSUER está definido.
Open WebUI, LibreChat, scripts e outros clientes MCPbearer (padrão)Authorization: Bearer <token> usando um token de POST /auth/token.

No modo OAuth, defina OAUTH_ISSUER_URL para a URL HTTPS pública do servidor (caso contrário, é derivada de cada solicitação, o que atrás de um proxy pode não ser a URL pública). O Registro Dinâmico de Clientes (/oauth/register) está desativado, a menos que OAUTH_ENABLE_DCR=true, e não pode ser combinado com OAUTH_IDP_ISSUER.

Guias: Integração Claude · LLMs Locais


LLMs Locais

O servidor não chama um modelo; ele apenas executa ferramentas. Para manter os dados do SIEM no local, combine-o com um modelo local:

cat >> .env <<EOF
VLLM_API_KEY=$(openssl rand -hex 32)
WEBUI_SECRET_KEY=$(openssl rand -hex 32)
EOF
docker compose -f compose.yml -f compose.local-llm.yml up -d

Isso adiciona vLLM (modelo padrão Qwen3.6-35B-A3B FP8, cerca de 42 GB de VRAM em uma GPU NVIDIA; não publicado em uma porta do host) e Open WebUI em 127.0.0.1:8080. Nas configurações de administrador do Open WebUI, adicione um servidor de ferramentas MCP (Streamable HTTP) em http://wazuh-main-server:3000/mcp com um token de portador.

Para modelos menores, exponha menos ferramentas com WAZUH_TOOLSETS / WAZUH_DISABLED_TOOLS, e verifique a seleção de ferramentas antes da implantação com evals/tool_selection.py (25 cenários de SOC, incluindo dois casos de injeção de prompt, contra qualquer endpoint compatível com OpenAI; nenhuma ferramenta é executada). Dimensionamento de modelos, Ollama e LiteLLM são abordados no Guia de LLM Local.


Ferramentas

55 ferramentas, agrupadas em conjuntos de ferramentas que podem ser habilitados com WAZUH_TOOLSETS (separados por vírgula; padrão todos). R = wazuh:read, W = wazuh:write.

Conjunto de ferramentasQuantidadeFerramentas
alerts5 Rget_wazuh_alerts, get_wazuh_alert_summary, get_alerts_aggregated, analyze_alert_patterns, search_security_events
agents6 Rget_wazuh_agents, get_wazuh_running_agents, check_agent_health, get_agent_processes, get_agent_ports, get_agent_configuration
vulnerabilities3 Rget_wazuh_vulnerabilities, get_wazuh_critical_vulnerabilities, get_wazuh_vulnerability_summary
analysis5 Ranalyze_security_threat, check_ioc_reputation, perform_risk_assessment, get_top_security_threats, generate_security_report
web_search1 Rsearch_external_context — pesquisa web You.com; retorna um resultado "não habilitado" a menos que YDC_API_KEY esteja definido
compliance6 Rrun_compliance_check (PCI-DSS, HIPAA, SOX, GDPR, NIST, ISO27001), get_iso27001_dashboard, get_iso27001_control_detail, get_iso27001_gap_analysis, get_iso27001_alerts, get_sca_policy_checks
system10 Rget_wazuh_statistics, get_wazuh_weekly_stats, get_wazuh_cluster_health, get_wazuh_cluster_nodes, get_wazuh_rules_summary, get_wazuh_remoted_stats, get_wazuh_log_collector_stats, search_wazuh_manager_logs, get_wazuh_manager_error_logs, validate_wazuh_connection
response — contenção9 Wwazuh_block_ip, wazuh_isolate_host, wazuh_kill_process, wazuh_disable_user, wazuh_quarantine_file, wazuh_firewall_drop, wazuh_host_deny, wazuh_active_response, wazuh_restart
response — reversão5 Wwazuh_unisolate_host, wazuh_enable_user, wazuh_restore_file, wazuh_firewall_allow, wazuh_host_allow
response — verificação5 Rwazuh_check_blocked_ip, wazuh_check_agent_isolation, wazuh_check_process, wazuh_check_user_status, wazuh_check_file_quarantine
  • Totais: 41 ferramentas de leitura, 14 ferramentas de escrita. Tokens sem wazuh:write não veem as ferramentas de escrita em tools/list.
  • No modo multi-cluster, uma 56ª ferramenta, list_wazuh_clusters (system, leitura), é adicionada e toda ferramenta aceita um cluster_id opcional.
  • WAZUH_DISABLED_TOOLS oculta ferramentas individuais. Ferramentas ocultas são removidas de tools/list e recusadas por tools/call; nomes de conjuntos de ferramentas ou ferramentas desconhecidos param o servidor na inicialização.
  • Cada ferramenta carrega anotações MCP derivadas do seu escopo: ferramentas de leitura são readOnlyHint: true; ferramentas de contenção são destructiveHint: true; ferramentas de reversão são destructiveHint: false; apenas search_external_context é openWorldHint: true.
  • Esquemas de entrada são fechados (additionalProperties: false); argumentos não declarados são recusados.
  • Filtros de timestamp aceitam ISO 8601 ou matemática de data OpenSearch (now-24h).
  • Prompts: security_investigation, threat_hunt, compliance_audit, vulnerability_assessment, iso27001_assessment.

Parâmetros por ferramenta: documentação da API.

Comportamento da resposta ativa

  • Os resultados relatam execution_status: "dispatched": o Wazuh confirma que o comando foi entregue ao agente, não que foi executado. Confirme o efeito com a ferramenta wazuh_check_* correspondente.
  • Bloqueios são permanentes até serem removidos. O Wazuh ignora o tempo limite para comandos acionados por API, então um duration positivo é recusado.
  • wazuh_firewall_allow e wazuh_host_allow exigem um comando de desfazer implantado pelo operador (WAZUH_AR_FIREWALL_UNDO_COMMAND, WAZUH_AR_HOSTDENY_UNDO_COMMAND); sem um, eles recusam.

Modelo de Segurança

ControleComportamento
Escopos (RBAC)Cada ferramenta requer wazuh:read ou wazuh:write. Um token sem declaração de escopo é somente leitura. MCP_API_KEY é somente leitura, a menos que MCP_API_KEY_SCOPES inclua wazuh:write. Com AUTH_MODE=none, as ferramentas de escrita são desabilitadas, a menos que AUTHLESS_ALLOW_WRITE=true.
Tokens BearerJWTs assinados com AUTH_SECRET_KEY, devem conter exp e estão vinculados à chave de API da qual foram emitidos: revogar ou rotacionar a chave invalida seus tokens. Tokens de atualização não são aceitos como tokens de acesso.
OAuthFluxo de código de autorização com PKCE S256 obrigatório, códigos de uso único, rotação de token de atualização com detecção de repetição e revogação. Os usuários entram com uma chave de API wazuh_ (a concessão é limitada aos escopos dessa chave, e seus tokens expiram quando a chave é revogada) ou em um provedor OpenID Connect (assinatura do token de ID, emissor, público, expiração e nonce verificados; listas de permissão de locatário, domínio e usuário; mapeamento de grupo para escopo), portanto, escopos, limites de taxa e entradas de auditoria são por usuário.
Salvaguardas de açãoAs ferramentas de bloqueio de IP recusam loopback, o endereço do Manager (quando WAZUH_HOST é um IP) e qualquer coisa em WAZUH_PROTECTED_IPS; a ferramenta genérica de resposta ativa não despacha bloqueios de IP, quarentena, encerramento de processos ou desativação de contas. Ações e reinicializações direcionadas ao agente 000 (o Manager) exigem WAZUH_ALLOW_MANAGER_AR=true; bloqueios em toda a frota exigem WAZUH_ALLOW_FLEET_AR=true; a quarentena recusa diretórios de sistema e de agente. Em produção, as ferramentas de escrita exigem confirm=true (WAZUH_REQUIRE_ACTION_CONFIRMATION).
Wazuh TLSOs certificados do Manager e do Indexer são verificados por padrão, no armazenamento do sistema ou em WAZUH_CA_BUNDLE. Desabilitar a verificação do Manager (WAZUH_ALLOW_SELF_SIGNED=true) é registrado na inicialização, como um erro em produção.
Log de auditoriaCada chamada de ferramenta de escrita que passa nas verificações de escopo e confirmação é registrada antes e depois da execução (logger wazuh_mcp_server.audit) com o principal, sessão, argumentos e resultado.
RedaçãoCredenciais e tokens são redigidos da saída da ferramenta em todos os formatos de resposta e dos logs do servidor.
Validação de entradaValidação tipada de IDs de agente, IPs, caminhos e nomes de comandos; as consultas do Indexer são construídas como Query DSL, não por interpolação de strings.
Limite de taxaJanela deslizante, padrão de 100 solicitações por 60 s (RATE_LIMIT_REQUESTS, RATE_LIMIT_WINDOW): por principal e IP do cliente em /mcp e /, por IP do cliente em outros endpoints, exceto os endpoints de sonda (/health, /ready, /metrics e seus aliases /healthz, /readyz, /live, /livez). A autenticação com falha é limitada por IP do cliente. Defina TRUSTED_PROXIES ao executar atrás de um proxy.
Limites de recursosDisjuntor em chamadas Wazuh: abre após 5 falhas consecutivas, tenta novamente após 60 s. Resultados de ferramentas superdimensionados são truncados com uma nota (MAX_TOOL_RESPONSE_CHARS). limit em get_wazuh_alerts e search_security_events é limitado a MAX_ALERTS_PER_QUERY (padrão 1000). O armazenamento de sessão em memória é limitado a MAX_SESSIONS (1000) e MAX_SESSIONS_PER_PRINCIPAL (100), e os metadados do cliente armazenados são truncados.
ContêinerExecuta como UID 1000; compose.yml define um sistema de arquivos raiz somente leitura, cap_drop: ALL e no-new-privileges. A imagem de tempo de execução não inclui pip.

Não há listener TLS integrado; encerre o TLS em um proxy reverso ou balanceador de carga. Relate vulnerabilidades conforme descrito em SECURITY.md.


Configuração

Todas as configurações são variáveis de ambiente (geralmente via .env). As que a maioria das implantações ajusta:

VariávelPadrãoFinalidade
WAZUH_HOST, WAZUH_USER, WAZUH_PASS—Conexão com a API do Manager (obrigatório)
WAZUH_PORT55000Porta da API do Manager
WAZUH_CA_BUNDLE—PEM da CA usado em vez do armazenamento do sistema para verificar o Manager e o Indexer; consulte Manager TLS
WAZUH_ALLOW_SELF_SIGNEDfalsetrue conecta-se ao Manager sem verificação de certificado (registrado na inicialização)
WAZUH_INDEXER_HOST, WAZUH_INDEXER_USER, WAZUH_INDEXER_PASS—Conexão com o Indexer; um prefixo de host http:// seleciona HTTP simples
WAZUH_INDEXER_PORT9200Porta do Indexer
ENVIRONMENTdevelopmentproduction exige um AUTH_SECRET_KEY forte (a menos que AUTH_MODE=none)
AUTH_MODEbearerbearer, oauth ou none
AUTH_SECRET_KEYgerado por processo fora de produçãoChave de assinatura de token; use o mesmo valor em todas as instâncias
MCP_API_KEY / API_KEYSgerado por processo se não definido (impresso apenas em desenvolvimento)Uma única chave wazuh_, ou uma lista JSON de chaves com hash com escopos por chave
MCP_API_KEY_SCOPESwazuh:readEscopos separados por espaço para MCP_API_KEY
OAUTH_ISSUER_URLderivado da solicitaçãoURL HTTPS pública do servidor, para AUTH_MODE=oauth
OAUTH_IDP_ISSUER—Provedor OpenID Connect para login OAuth (com OAUTH_IDP_CLIENT_ID); login com chave de API quando não definido
WAZUH_REQUIRE_ACTION_CONFIRMATIONtrue em produção, caso contrário falseFerramentas de escrita exigem confirm=true
MCP_HOST, MCP_PORT127.0.0.1 (0.0.0.0 na imagem Docker), 3000Endereço de bind e porta
ALLOWED_ORIGINShttps://claude.ai,http://localhost:3000Lista de permissões CORS (correspondência exata)
WAZUH_TOOLSETS, WAZUH_DISABLED_TOOLStodos habilitadosLimitar as ferramentas expostas
REDIS_URL—Armazenamento de sessão compartilhado para implantações multi-instância
WAZUH_CLUSTERS_FILE./config/clusters.jsonTopologia multi-cluster; modo de cluster único quando ausente
RESPONSE_FORMATjsongcf codifica coleções de alertas, eventos e vulnerabilidades no formato GCF compacto (sem perdas; volta para JSON se o codificador não estiver disponível)
YDC_API_KEY—Habilita search_external_context

Referência completa, incluindo TTLs OAuth, limites de taxa, sessões e configurações de resposta ativa: Guia de Configuração. Configuração multi-cluster: Guia Multi-Cluster e config/clusters.json.example.

Executando a partir do código-fonte

python -m venv .venv && source .venv/bin/activate
pip install -e ".[redis,gcf]"      # extras are optional
set -a; . ./.env; set +a           # the server reads the environment, not .env
python -m wazuh_mcp_server

Requer Python 3.11 ou posterior.


Endpoints HTTP

EndpointMétodoDescrição
/mcpPOST, GET, DELETEMCP Streamable HTTP
/POST, GETMesmo manipulador que /mcp
/sseGET, POSTRetorna 410 Gone; use /mcp
/healthGETLiveness; sem verificações de dependência
/readyGETReadiness; 503 quando o Manager, Indexer ou a verificação de espaço de memória falha
/metricsGETMétricas Prometheus
/auth/tokenPOSTTroca uma chave de API por um JWT bearer
/.well-known/oauth-authorization-serverGETMetadados OAuth (RFC 8414), somente AUTH_MODE=oauth
/.well-known/oauth-protected-resourceGETMetadados de recurso protegido (RFC 9728), somente AUTH_MODE=oauth
/oauth/authorize, /oauth/token, /oauth/revoke, /oauth/register, /oauth/callbackGET/POSTEndpoints OAuth, somente AUTH_MODE=oauth (/oauth/register requer OAUTH_ENABLE_DCR=true e sem OAUTH_IDP_ISSUER; /oauth/callback é o URI de redirecionamento OpenID Connect e precisa de OAUTH_IDP_ISSUER)
/docs, /redoc, /openapi.jsonGETDocumentação OpenAPI

Estrutura do Projeto

src/wazuh_mcp_server/
├── server.py          # FastAPI app, MCP protocol handling, CORS/Origin checks, tool definitions and dispatch
├── toolsets.py        # Toolset membership, WAZUH_TOOLSETS resolution, tool annotations
├── auth.py            # API keys and bearer JWTs
├── oauth.py           # OAuth 2.0 authorization server (PKCE, API-key sign-in)
├── oidc.py            # OpenID Connect sign-in at an external identity provider
├── config.py          # Environment configuration and startup validation
├── security.py        # Rate limiting, request and input validation, log redaction
├── clusters.py        # Multi-cluster registry and Cross-Cluster Search routing
├── session_store.py   # In-memory and Redis session storage
├── resilience.py      # Circuit breakers, retries, graceful shutdown
├── monitoring.py      # Prometheus metrics, structured logging
├── gcf_format.py      # Optional GCF response encoding
└── api/
    ├── wazuh_client.py    # Wazuh Manager REST API client
    └── wazuh_indexer.py   # Wazuh Indexer (OpenSearch) client

Documentação

DocumentoConteúdo
Guia de ConfiguraçãoCada variável de ambiente, modos de autenticação, RBAC
Integração ClaudeConectando conectores personalizados Claude
Guia LLM LocalvLLM, Open WebUI, Ollama, LiteLLM, avaliação de seleção de ferramentas
Multi-ClusterClusters nomeados e pesquisa entre clusters
OperaçõesImplantação, monitoramento, manutenção
Recursos AvançadosImplantação multi-instância, saída compacta
Solução de ProblemasProblemas comuns e correções
Referência da APIParâmetros por ferramenta
Endurecimento de SegurançaOrientação de endurecimento
Conformidade MCPNotas de conformidade de protocolo
Compatibilidade WazuhVersões Wazuh suportadas
Atualização · Changelog · Política de SegurançaNotas de versão e políticas

Projeto relacionado: Wazuh Autopilot constrói fluxos de trabalho SOC automatizados sobre este servidor.


Contribuindo

Consulte CONTRIBUTING.md. Bugs, solicitações de recursos e perguntas vão para Issues, e relatórios de segurança para um aviso de segurança privado.


Licença

MIT


Agradecimentos

Obrigado a todos que contribuíram com código, revisões, relatórios de bugs e feedback de design. Consulte também ACKNOWLEDGMENTS.md.

Código e pull requests

  • @alokemajumder — mantenedor; arquitetura, transporte MCP, endurecimento de segurança, versões
  • @gensecai-dev — as 19 ferramentas de ação, verificação e reversão, correções de endpoints quebrados, endurecimento de produção
  • @andrzej-piotrowski-pl — ferramentas de conformidade ISO 27001:2022: mapeamento de controle do Anexo A, pontuação de domínio, análise de lacunas (#74)
  • @blackwell-systems — codificação de resposta GCF opcional para ferramentas de registro (#102, #104)
  • @lucascruzb — agregação de alertas por período via scroll, a base de get_alerts_aggregated (#79)
  • @kanylbullen — modo de saída compacta para respostas eficientes em tokens (#65)
  • @mouse-value-add — contexto opcional de pesquisa web You.com (#85)
  • @DrRSatzteil — correção de paginação tools/list (#70)
  • @SiM22 — suporte MCP 2025-06-18 para compatibilidade Windsurf (#66)
  • @aiunmukto — .env.example (#12), um fluxo de trabalho CI inicial e a listagem no registro Glama
  • @Karibusan — correções de dependência (#38)
  • @lwsinclair — listagem MseeP.ai (#9)
  • @markeclaudio — login OpenID Connect (#123), salvaguardas de resposta ativa (#124, #125), limites de armazenamento de sessão (#126), verificação TLS do Manager por padrão (#127)
  • @MilkyWay88 e @taylorwalton — pull requests iniciais sobre configuração, registro e empacotamento

Relatórios de bugs e discussões

@cbassonbgroup, @cybersentinel-06, @daod-arshad, @mamema, @marcolinux46, @matveevandrey, @punkpeye, @tonyliu9189, @Uberkarhu, @bl4ck5w4n07, @gnix45, @hackdefendr, @melmasry1987, @Vasanth120v, @wqfh

Construído sobre e funciona com


Contribuidores

Contribuidores

AvatarUsernameContribuições
@alokemajumder💻 Código, 🐛 Issues, 🔀 PRs, 💬 Discussões
@Karibusan💻 Código, 🐛 Issues, 🔀 PRs
@gensecai-dev💻 Código, 🔀 PRs, 💬 Discussões
@aiunmukto💻 Código, 🔀 PRs
@andrzej-piotrowski-pl💻 Código, 🔀 PRs
@blackwell-systems💻 Código, 🔀 PRs
@kanylbullen💻 Código, 🔀 PRs
@lucascruzb💻 Código, 🔀 PRs
@lwsinclair💻 Código, 🔀 PRs
@mouse-value-add💻 Código, 🔀 PRs
@SiM22💻 Código, 🔀 PRs
@DrRSatzteil🔀 PRs
@MilkyWay88🔀 PRs
@taylorwalton🔀 PRs
@cbassonbgroup🐛 Issues
@cybersentinel-06🐛 Issues
@daod-arshad🐛 Issues
@mamema🐛 Issues
@marcolinux46🐛 Issues
@matveevandrey🐛 Issues
@punkpeye🐛 Issues
@tonyliu9189🐛 Issues
@Uberkarhu🐛 Issues
@bl4ck5w4n07💬 Discussões
@gnix45💬 Discussões
@hackdefendr💬 Discussões
@melmasry1987💬 Discussões
@Vasanth120v💬 Discussões
@wqfh💬 Discussões

Legenda: 💻 Código · 🐛 Issues · 🔀 Pull Requests · 💬 Discussões

Atualizado automaticamente por GitHub Actions