Flint (also styled FLInt) is a lightweight, desktop GUI for Microsoft Foundry Local.
It provides an intuitive interface for:
- Model catalog browsing/search/filter (STT-only for audio via metadata), hardware-aware recommendations, download/load/unload + progress, and WinML/accelerator preference support
- Chat (streaming) with conversation sidebar, persona selector, localStorage persisted history, system prompt controls, stop/cancel, and basic vision image support (emerging in SDK)
- Audio transcription (mic + file) using STT models with copy/download transcript actions
- Diagnostics with service controls, endpoint visibility/copy snippets, and active execution provider inventory
- Learn section + local endpoint
- Bundled runtime (sidecar eval for clean prod builds), first-run guidance
Everything runs locally on your device by default.
Flint is now at an MVP 0.1-ready baseline for dogfood/public-preview use:
- Models: catalog/search/filter + download/load/unload + model metadata details
- Chat: streaming + conversation UX + thinking-trace rendering + cancellation path + persona presets
- Audio: STT model selection + mic/file transcription + transcript copy/download
- Diagnostics: service controls + endpoint/snippet visibility + execution provider inventory
- Test baseline: unit + sidecar protocol tests + coverage gating
See release evaluation + roadmap: RELEASE_ROADMAP.md
- Multi-endpoint orchestration is not implemented; most flows assume one active endpoint/model lane.
- Diagnostics export and cache operations are functional but not yet fully hardened/polished.
- Security posture is improved but not yet least-privilege complete (shell capability scope will be tightened in 0.2).
- Test coverage is foundational (good baseline), not full UI/E2E depth yet.
- Some audio features may not work as desired.
- Browse and search local model catalog
- Metadata-driven model filtering (including STT-focused audio lane)
- Download/load/unload models with progress feedback
- Model details panel (task/context/capabilities)
- Streaming assistant responses
- Conversation sidebar with persisted history
- Persona selector and editable system prompt
- "Thinking" trace rendering in chat responses
- Stop/cancel active generation
- Basic image attach flow for vision-capable models
- Microphone transcription
- File transcription
- STT model selection
- Copy transcription text
- Download transcription text
- Sidecar/service status and controls
- Local endpoint display
- Copy-ready endpoint snippets
- Execution provider list and active provider visibility
npm run checkstatic/type validation- Vitest unit tests for core utilities
- Sidecar protocol smoke test
- Coverage thresholds in CI/dev test runs
- Tauri 2 (Rust + WebView)
- Svelte 5 + SvelteKit + TypeScript
foundry-local-sdk(primary) +foundryCLI (supporting)
npm install
npm run tauri devPrerequisites
- Node.js + npm
- Rust + Cargo (for Tauri)
- The runtime is bundled in builds (no separate install needed for end users)
On Windows prefer the WinML variant for best acceleration:
npm run setup:winmlnpm run tauri:build
node scripts/verify-bundle.js- During development:
npm run tauri dev(recommended, hot reload, uses sidecar) - Test a production build without installing the MSI:
scripts\run-built.bat(orpwsh scripts/run-built.ps1, or double-click the .exe insrc-tauri/target/release/) - Distribute to users: Use the generated MSI (
src-tauri/target/release/bundle/msi/Flint_*.msi) or NSIS installer. These create proper Start Menu entries, uninstaller, etc.
See .github/workflows/ for CI (PR checks + builds) and Release (tagged builds create GitHub releases with artifacts for Windows/macOS).
To refresh app icon assets from a source image:
pwsh .\scripts\flint-icon-generator.ps1 -SourceImage .\static\flint-master-1024.png -RepositoryRoot .This updates icon assets in static\ and src-tauri\icons\ (including .ico).
SVG generation is intentionally excluded because it was producing raster-wrapped output rather than true vector artwork.
Sidecar evaluation (for native SDK issues):
Direct use of foundry-local-sdk (JS + native) from the Svelte frontend has bundling challenges:
- Vite externalizes Node core modules (
fs,url,module, etc.) duringtauri build. - Native prebuilts + core DLLs are copied via resources, but resolution can fail in the final bundle.
- See
sidecar/foundry-sidecar.jsfor a prototype stdio-based sidecar wrapper (JSON protocol). Use@tauri-apps/plugin-shellto spawn and communicate from frontend.
Recommendation: For production, evaluate moving logic to a Rust sidecar (or directly in src-tauri using the Rust foundry-local-sdk crate). This gives clean native bundling and no JS FFI headaches. Current JS approach is kept for rapid iteration per original design spec.
Sidecar readiness: The sidecar now emits { "ready": true } immediately after listener setup and lazy-loads the SDK only on the first init command. resolveResource + cwd + NODE_PATH are used for robust script/SDK resolution in dev + prod bundles. Stderr is captured. Timeout is 10s.
Note on distribution: Because the sidecar runs node <script>, end users of built installers still need Node.js installed and on PATH. (A self-contained .exe sidecar via pkg or a Rust port would remove this.)
Run npm run tauri:build (may require full MSVC/Rust env) and node scripts/verify-bundle.js.
- Added basic support in Chat: image attach (base64) when model alias suggests vision/multimodal.
- Messages use OpenAI-style content array for images.
- Helper
getVisionModels()in SDK (based on task/capabilities). - Full support is emerging in the local SDKs (chat models with vision capabilities exist in catalog like certain Phi/Qwen variants; image input via the compatible API). Currently best-effort; test with actual vision models. No dedicated vision tab yet.
- PRs: Lint, checks, cross-platform debug builds
- Releases: Push
vX.Y.Ztag → automated release with installers
MIT
See the design spec for scope and roadmap.
Built to make Foundry Local approachable while staying true to its local-first roots.


