e839620537104e1c71675559c9d200582e5f5a2f
The redesign of the chat UI to use StreamingBubble mistakenly omitted the actual rendering of the visible 'content' (and fallback raw text). It only showed the thinking/reasoning block and the loading dots, leaving the main content invisible until the generation finished. Added the markdown rendering block back to StreamingBubble to show text in real-time.
ForgeLM
ForgeLM e um workspace Rust para inferencia local de LLMs com tres superficies principais:
- uma API HTTP local compativel com partes da API de chat da OpenAI
- uma CLI (
localllm) para operacao, diagnostico e automacao - um app desktop Tauri para runtime management e chat persistente
O projeto hoje e organizado para rodar localmente, com foco em modelos .gguf, operacao local-first e uma ponte entre backend Rust, CLI e interface desktop.
O que existe hoje
crates/inference-server: servidor HTTP comGET /health,GET /v1/modelsePOST /v1/chat/completionscrates/localllm-cli: CLI para status, modelos, auth, config, benchmark, logs e doctortauri-app: app desktop com runtime manager, chat UI, armazenamento local e integracao com o backendcrates/api-contracts: contratos de request/response compartilhadoscrates/inference-core: engine, perfis de runtime e pipeline de inferencia
Inicio rapido
1. Subir a API local
Defina pelo menos o caminho do modelo e execute o servidor:
set LOCALLLM_MODEL=D:\caminho\modelo.gguf
cargo run -p inference-server
Validacoes basicas:
curl http://127.0.0.1:8080/health
curl http://127.0.0.1:8080/v1/models
2. Usar a CLI
cargo run -p localllm-cli -- status
cargo run -p localllm-cli -- models list
3. Abrir o app desktop
cd tauri-app
npm install
npm run tauri dev
No app, abra o Runtime Manager, configure modo local ou remoto e depois use o chat.
Requisitos
- Rust toolchain atual para o workspace
- Node.js/NPM para o app Tauri
- um modelo
.gguflocal para o runtime - GPU NVIDIA e opcional; o projeto tambem possui perfil CPU fallback
Estrutura do repositorio
crates/api-contracts/- contratos HTTP e tipos compartilhadoscrates/inference-core/- engine, sessoes, sampler e perfis de runtimecrates/inference-server/- servidor HTTP localcrates/localllm-cli/- CLI de operacaocrates/metrics/- contadores e medicao de throughputcrates/llama-sys/- bindings/integracao de baixo niveltauri-app/- app desktop Tauri + frontend Reactdocs/- documentacao detalhada
Documentacao
docs/README.md- indice da documentacaodocs/api/overview.md- visao geral do backend e da APIdocs/api/endpoints.md- referencia HTTPdocs/api/configuration.md- variaveis de ambiente e configuracao do servidordocs/cli/overview.md- visao geral da CLIdocs/cli/commands.md- referencia de comandos e exemplosdocs/app/overview.md- visao geral do app desktopdocs/app/user-guide.md- guia de uso do appdocs/app/backend-commands.md- comandos Tauri expostos pelo backend do appdocs/developer/architecture.md- arquitetura do workspace e fluxos entre modulos
Estado atual e limitacoes
- A API atual expoe apenas tres endpoints publicos:
GET /health,GET /v1/modelsePOST /v1/chat/completions. - A compatibilidade com OpenAI e parcial: o projeto foca no fluxo de chat, nao em toda a superficie da plataforma.
- A CLI possui uma superficie ampla, mas a execucao ao vivo hoje esta mais consolidada em
status,models listebench throughput. - O app desktop controla o runtime local no modo
locale pode consumir uma API ja existente no modoremote. - O armazenamento do chat no frontend usa
sql.jscarregado por CDN e persistencia emlocalStorage.
Leitura recomendada
- Quer entender a API? Comece em
docs/api/overview.md. - Quer operar o sistema por terminal? Va para
docs/cli/overview.md. - Quer usar o app desktop? Leia
docs/app/user-guide.md. - Quer contribuir no codigo? Comece em
docs/developer/architecture.md.
Languages
TypeScript
43.3%
Rust
38%
CSS
11%
HTML
5.1%
Python
2%
Other
0.6%