APRENDIZADO & COGNIÇÃO · ESTUDO BASEADO EM EVIDÊNCIA
Construí um cliente de Discord nativo em Rust que usa apenas ~30MB de RAM (e 0.1% de CPU)
Fala pessoal do TabNews! 👋 Se você joga no PC ou trabalha com várias abas e ferramentas pesadas abertas ao…

Fala pessoal do TabNews! 👋
Se você joga no PC ou trabalha com várias abas e ferramentas pesadas abertas ao mesmo tempo, provavelmente já passou por isso: abrir o Discord oficial só para conversar com amigos em call e ver o Gerenciador de Tarefas acusar 500MB a 800MB+ de memória RAM e picos de uso de CPU que provocam aqueles micro-stutters (micro-engasgos) chatos no meio de uma partida.
O motivo é conhecido: o Discord oficial roda sobre o Electron (Chromium + Node.js), o que significa carregar um navegador web completo em segundo plano.
Incomodado com isso, decidi encarar um desafio: é possível recriar a essência do Discord — chat de texto e canais de voz com áudio de alta fidelidade — em um binário nativo ultra-leve em Rust?
O resultado é o Litecord, um projeto 100% open source que consome menos de 35MB de RAM e < 0.1% de CPU em idle. Compartilho abaixo as decisões de arquitetura e os desafios técnicos que enfrentei.
🛠️ A Escolha da Stack: Por que não usar WebView/Tauri?
A primeira tentação seria usar Tauri (que substitui o Chromium pelo WebView do sistema). Porém, para atingir o objetivo de performance máxima e consumo irrisório de memória, decidi ir direto ao metal:
- Linguagem: Rust (2021 Edition) — controle total de memória, zero runtime overhead e segurança para processamento de áudio concorrente em tempo real.
- Interface Gráfica: Slint UI — um framework moderno de GUI declarativa compilada nativamente. O Slint não renderiza HTML/CSS; ele compila o layout direto para instruções gráficas nativas (via FemtoVG/OpenGL ou renderizador de software), gerando uma interface fluida a 60 FPS com menos de 10MB de pegada de memória.
- Pipeline de Áudio: CPAL (Cross-Platform Audio Library) + decodificador nativo Opus (48kHz).
- Async Runtime: Tokio para orquestrar WebSockets, chamadas REST da API do Discord e o loop de eventos de interface sem travar a thread principal.
🔬 Desafios Técnicos Interessantes
1. Voz em Tempo Real e Criptografia DAVE (E2EE)
O Discord recentemente começou a implementar o protocolo DAVE (MLS – RFC 9420) para criptografia de ponta a ponta nas chamadas de voz.
- Para garantir que a voz não pipocasse ou ficasse “robótica” quando a GPU/CPU do computador estivesse em 100% de carga (durante um jogo pesado), implementamos Opus PLC (Packet Loss Concealment) com um jitter buffer adaptativo de 40ms e resampler cúbico Hermite a 48kHz.
2. Login Seguro por QR Code (Discord Remote Auth v2)
Em vez de pedir para o usuário colar tokens manualmente ou inspecionar cabeçalhos de rede:
- O Litecord implementa o protocolo Remote Auth v2 do Discord via WebSocket com pares de chaves RSA-2048 transitórias.
- O app gera um QR Code na tela; você escaneia pelo aplicativo do Discord no celular e autoriza o login com 1 toque.
- No Windows, o token da sessão é persistido no disco criptografado através da API nativa Windows DPAPI (
CryptProtectData), garantindo que nenhum outro processo ou usuário não autorizado no PC consiga ler o segredo.
3. Ducking de Fala Dinâmico (Foco no IGL / Líder do Squad)
Em chamadas com muitas pessoas falando ao mesmo tempo ou bots de música tocando no canal, a comunicação tática fica caótica. Criamos um sistema de Prioridade de Fala (P:1, P:2, etc.):
- Quando o líder/shot-caller fala, o volume de todos os outros participantes e bots é atenuado suavemente em tempo real (ducking inteligente), voltando ao normal assim que ele termina a frase.
4. DeepSleep na Bandeja do Sistema
Ao minimizar o Litecord para a bandeja do sistema (System Tray):
- Todos os loops de renderização visual e atualizações de UI do Slint são completamente suspensos (
0.0% de CPU). - Apenas a thread assíncrona leve de recepção de áudio RTP/Opus continua ativa, consumindo recursos praticamente imperceptíveis enquanto você joga.
📊 Comparativo: Discord Oficial vs Litecord
| Métrica | Discord Oficial (Electron) | Litecord (Nativo em Rust) |
|---|---|---|
| Uso de CPU (Idle) | 1.5% – 4.5% | < 0.1% (DeepSleep: 0.0%) |
| Uso de CPU (Voz Ativa) | 4.0% – 8.0% | ~0.4% – 0.8% |
| Uso de Memória RAM (Idle) | ~400 MB – 750 MB | ~28 MB – 35 MB |
| Uso de Memória RAM (Voz) | ~600 MB – 900 MB | ~32 MB – 45 MB |
| Tamanho do Executável | ~180 MB | ~8 MB (Standalone) |
| Tempo de Inicialização | 4 a 9 segundos | < 200 milissegundos |
📦 Código Aberto & Como Testar
O projeto é 100% open source sob licença MIT e já conta com executáveis prontos gerados pelo GitHub Actions:
-
🪟 Windows: Instalador
.exee versão Portátil.zip -
🐧 Linux: Pacote nativo
.tar.gz(testado e compatível com Ubuntu/Arch) -
🔗 Repositório no GitHub: https://github.com/Ak4ai/Litecord
-
🌐 Página do Projeto: https://ak4ai.github.io/Litecord/
💬 Gostaria do Feedback de Vocês!
Quais outras otimizações ou recursos essenciais vocês acham que fariam sentido manter em um cliente focado puramente em leveza e baixo consumo? Fiquem à vontade para testar, abrir issues ou mandar PRs! 🦀🚀
Perguntas frequentes
Respostas institucionais sobre esta cobertura, fontes e limites editoriais.
- Sobre o que trata “Construí um cliente de Discord nativo em Rust que usa…”?
- Fala pessoal do TabNews! 👋Se você joga no PC ou trabalha com várias abas e ferramentas pesadas abertas ao mesmo tempo, provavelmente já passou por isso: abrir o Discord oficial só para conversar com amigos em…
- 🛠️ A Escolha da Stack: Por que não usar WebView/Tauri?
- A primeira tentação seria usar Tauri (que substitui o Chromium pelo WebView do sistema). Porém, para atingir o objetivo de performance máxima e consumo irrisório de memória, decidi ir direto ao metal:Linguagem: Rust (2021 Edition) — controle total de memória, zero runtime…
- O que a matéria explica sobre “🔬 Desafios Técnicos Interessantes”?
- 1. Voz em Tempo Real e Criptografia DAVE (E2EE)O Discord recentemente começou a implementar o protocolo DAVE (MLS - RFC 9420) para criptografia de ponta a ponta nas chamadas de voz.Para garantir que a voz não pipocasse ou ficasse "robótica" quando a…
- O que a matéria explica sobre “📊 Comparativo: Discord Oficial vs Litecord”?
- MétricaDiscord Oficial (Electron)Litecord (Nativo em Rust)Uso de CPU (Idle)1.5% - 4.5%< 0.1% (DeepSleep: 0.0%)Uso de CPU (Voz Ativa)4.0% - 8.0%~0.4% - 0.8%Uso de Memória RAM (Idle)~400 MB - 750 MB~28 MB - 35 MBUso de Memória RAM (Voz)~600 MB - 900 MB~32…
- O que a matéria explica sobre “📦 Código Aberto & Como Testar”?
- A seção “📦 Código Aberto & Como Testar” organiza o contexto de Estudo baseado em evidência com fatos e implicações práticas destacados pela redação.
- Quem edita o conteúdo do Estrato Mente?
- A cobertura é produzida e revisada pela equipe editorial do Estrato Mente, com editor-chefe responsável pela linha editorial. Conheça a redação em https://mente.estrato.cc/equipe/.
- Quais fontes o Estrato prioriza?
- Priorizamos fontes primárias (órgãos oficiais, balanços, estudos revisados, documentos públicos) e cruzamos informações antes da publicação, conforme a política editorial.
- Como solicitar correção de uma matéria?
- Envie o pedido pela página de Correções (https://mente.estrato.cc/correcoes/) ou Contato (https://mente.estrato.cc/contato/). Erros materiais são corrigidos com registro da atualização.