Every icon,
drawn by
one rule.
Open-source icons for AI-era software — LLMs, agents, MCP, RAG and everything around them. Two variants across three weights — six drawings per icon — generated from one grid by a compiler that refuses a shape it cannot draw correctly.
Four ways in
Install
npmTree-shakeable: you ship the icons you import and nothing else. Same API in Vue, Svelte, Solid, Preact, React Native, Astro and Laravel — pick your target on any icon page.
Read the React docs →import { Agent, VectorDatabase } from "@iconmind/react";
<Agent />
<Agent variant="duotone" weight="bold" />
<VectorDatabase size={32} color="#C2410C" />
// Each weight is its own drawing, not a stroke-width — and `variant`
// is narrowed per icon, so asking for a drawing an icon does not have
// is a compile error rather than a silent fallback.Works with your stack
Ten packages, one generated source of truth: the same icon names, the same size, color, variant and weight props in every framework — learn the API once and carry it everywhere.
Why they look like one set
Compiled, not drawn twice
Every icon is one declaration. The generator emits all six cells from it, so a change to the corner radius is a change to 1041 icons rather than 1041 edits.
It refuses bad geometry
An anchor off the grid, a segment at 127°, a run too short to survive the bold weight, two strokes that would merge — the compiler stops before the file exists.
Every cell is the same drawing
Nothing is offset, derived or redrawn. The cells differ by a stroke width and a tint, so no two of them can drift apart.
One declaration, six cells
outline / thin
outline / regular
outline / bold
duotone / thin
duotone / regular
duotone / bold
Browse by category
A few of them
Free, and it stays free.
MIT licensed — commercial use, no attribution, no seat count, and no later version that takes it away.