npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

glypho

v0.2.0

Published

LLM-optimized graph notation — parse, render, and convert .g diagrams

Readme

The 14 lines of .g that drew the diagram above:

>LR
idea:c Idea #a5f
draft:r "Write .g" #08f
check:d "Valid?" #fa0
render:r "Render SVG" #08f
fix:h "Fix line 3" #f55
ship:p Shipped #0a5
@loop "write - check - render" { draft check render fix }
idea>draft
draft>check
check>render "yes"
check>fix "no"
fix>draft
render>ship

Try it live in the Glypho Editor →

Quick start

npm install glypho
import { render } from 'glypho';

const { svg } = render('a:r Hello\nb:c World\na>b');
// svg is a complete <svg> string — embed it in HTML, write it to a file, serve it from an API

No DOM, no React, no headless browser. Parsing and layout are pure functions.

Why Glypho

The same diagram costs a fraction of the tokens in .g — which matters when an LLM writes, reads, or edits it:

| Format | Tokens (diagram above) | Relative | |--------|----------------------:|---------:| | Glypho .g | 102 | 1× | | Mermaid | 155 | 1.5× | | Graphviz DOT | 204 | 2.0× | | JSON Canvas | 580 | 5.7× |

The parser is built for the write → check → render loop: common authoring mistakes (unquoted multi-word labels, bad hex colors, chain labels) are loud, line-anchored errors with fix hints — never a silently wrong graph.

Syntax in 60 seconds

| Write | Get | |-------|-----| | >LR | Layout direction (LR, TB, RL, BT) | | a:r "User Login" #08f | Node: id a, rectangle, label, color | | a>b "yes" | Arrow with a label | | a>b>c>d | Chain of arrows | | a~b  a=b  a--b  a<>b | Dashed, thick, undirected, bidirectional | | @auth { login mfa } | Group box (nesting supported) | | $:d { fill:#ffa } | Style every diamond |

Shapes: r rectangle · d diamond · c circle · o oval · p pill · h hexagon

Full grammar, groups, classes, positions: specification.

React component

npm install glypho react
import { GlyphoGraph } from 'glypho/react';
import { parse } from 'glypho';

const { graph } = parse('a:r Hello\nb:c World\na>b');

<GlyphoGraph graph={graph} width={800} height={600} onNodeClick={id => select(id)} />

| Entry point | What you get | React required? | |-------------|--------------|-----------------| | glypho | Parser + SVG renderer | No | | glypho/react | Everything above + <GlyphoGraph> component | Yes (peer dep, React 18/19) |

CLI

The command line lives in a separate package so this one stays lightweight:

npm install -g @glypho/cli

glypho check flow.g          # validate, with file:line:col errors
glypho render flow.g         # → flow.svg
glypho render flow.g -f png  # → flow.png (CJK-safe fonts)
glypho from mermaid flow.mmd # convert Mermaid → .g
glypho info flow.g           # token cost vs Mermaid / DOT / JSON Canvas

The Glypho family

| Package | Description | |---------|-------------| | glypho | This package — parser + renderer in one install | | @glypho/parser | Lexer + parser, AST types, Mermaid/DOT/JSON Canvas converters | | @glypho/renderer | Layout engine, SVG renderer, React component | | @glypho/cli | glypho command: check, render, preview, convert |

Links