Open web mascot runtime

Meet Peek! an adorable peekling that lives on the web

A character can be a companion, a creation, a tool, a mascot, or something nobody has imagined yet. Peekling gives them a place to exist, quietly, playfully, and without getting in your way.

FreeOpen Source EngineNo telemetryData-only packs

For the curious

A Peekling is something you encounter.

Not a notification. Not a chore. Just a small presence with a genuine personality, sharing your corner of the web for a while.

Enter the Peekling Universe
  1. peekthe curious action
  2. Peekthe first character
  3. Peeklingthe character type
  4. Peeklingsthe world of characters
Live preview 4× source art
Peek A curious kitten-fox who follows pointers and celebrates small wins. Idle Looping animation Launch full playground

The whole install

Pick your path.
Keep your stack.

Load the version-pinned browser file from jsDelivr and call the global API. Runtime 0.1.0 is live now and remains pinned here.

HTML
<script src="https://cdn.jsdelivr.net/npm/@peekling/runtime@0.1.0/dist/peekling.min.js"></script>
<script>Peekling.hatch("peek");</script>
FollowsEight-direction pursuit at a controlled cadence
ReactsClick, scroll, success, happy, and error semantics
RestsIdle, sleep, background-tab, and reduced-motion behavior

Bring a character

Art in. Code stays out.

A native pack is a manifest, one or more PNG density variants, and a licence. The validator checks geometry, hashes, frames, paths, and state cycles before rendering.

  1. 01character.jsonNamed states and metadata
  2. 02atlas-{1,2,4}x.png64px logical · 16 dense columns
  3. 03LICENSERights travel with the art

Community Peeklings

A whole world is gathering.

Community-contributed Peeklings will live in one searchable collection. Until submissions open, this orbit uses our own roster to show how many kinds of little lives can belong here.

Explore Peeklings
Open the Peeklings collection

Cute, with boundaries

Delight should never become surveillance.

No telemetry or backend
Peekling does not send analytics, identifiers, or page content anywhere.
Host-page isolation
A closed Shadow DOM, pointer-events none, passive capture, and complete teardown keep controls and styles yours.
Data-only characters
Packs cannot ship executable code. Paths, sizes, atlas geometry, states, and resources are validated.

Measured locally, gated in CI

Small enough to stay polite.

31.09KiBruntime gzip

27.52KiBruntime Brotli

36.63KiBtree-shaken hatch gzip

340.81KiBcomplete first embed

Published runtime 0.1.0, a measured tree-shaken hatch import, and the complete Peek pack. Transfer size depends on server compression and delivery configuration.

Plain HTML

React, Vue, Svelte

Rails, Laravel, Django

Any page that runs JavaScript

Your corner looks lonely

Let Peek move in.

Copy the install

Open source engine. No account. No backend.

A little clarity

Questions before a Peekling moves in.

What is Peekling?

Peekling is an open-source browser runtime for small, data-only animated characters. Peek is the first Peekling. Other characters can bring their own appearance, states, and way of moving.

Is Peekling free and open source?

Yes. The engine is licensed under Apache-2.0. Character packs carry their own license and provenance metadata, so their reuse terms remain explicit instead of being assumed.

Does Peekling collect data?

No. The runtime has no telemetry, account, or required backend. Interaction state stays in the browser, and site visibility preferences are stored locally without a network request.

Will a Peekling interfere with my page?

It is designed not to. The browser host uses a closed Shadow DOM, stays pointer-transparent, listens passively where appropriate, and provides complete teardown when destroyed.

How do I add one to a website?

The browser setup is two HTML lines: load a version-pinned build, then place a <peekling-character> element. Advanced hosts can use Peekling.hatch(...) or ESM with the same public runtime contract.

Can I use my own character?

Yes. Compile and validate a data-only Peekling pack, then use its immutable HTTPS manifest or a configured resolver. The runtime fetches only that manifest and one suitable density atlas.

Does it work with my framework or server?

If the page runs JavaScript, it can run Peekling. React, Vue, Svelte, Rails, Laravel, Django, and other stacks all integrate through the same browser API. Wrappers are optional conveniences.

Can a visitor hide a Peekling?

Yes. Holding the bottom-right corner reveals temporary and site-local rest choices. The preference needs no account or server, and a site can always provide a normal “Show again” control.