JavaScript in JavaScript interpreter.

What & why?

metaES is a building block for libraries and tools.
It was created to speed up applications development.

Main features

Writen in JavaScript

metaES is a JavaScript meta-circular interpreter.

To take most of metaES, you'll have to learn how it works otherwise you can just use tools written by others without even being aware of metaES.

Integrates with your application

No matter what app you're building and where it's run:

  • in a web browser,
  • in node.js,
  • in any other environment or custom ECMAScript interpreter,

you can benefit from metaES. It (TODO: link) flattens many of your ad-hoc built abstractions and streamlines control flow.

Full introspection

metaES is an interpreter, meaning introspection is intristic part of whole project. If you ever find situation where information you're looking for cannot be introspected, you can run metaES inside metaES.

You can mix your application code with metaES to find sweet spot between performance and control.

Connect and adjust


Currently metaES doesn't implement full ECMAScript specification and is not strict about test262 tests suite, although it might become a goal if such requirement arises.

You should get clean error when you're trying to use (TOOD: link) unsupported feature. (TODO: link) Selective disabling of the features can also be desirable.

Leverage JSON to exchange messages

It's possible to swap most basic operations like setting and getting variables values and offload logic to different process on local or remote machine.

By using JSON you can prioritize discoverability and ease of use over performance which can result in proliferation across different stacks supporting JSON. Idea of distributed interpreter can be achieved with a low cost.

Persist state using existing database

ECMAScript's heap inside metaES can be mapped to tables/schemas and rows/documents inside one of popular databases.

So far, SQLite and IndexedDB were used to persist state.

Tools using metaES

Vanillin Beta

Vanillin is a JavaScript and metaES DOM user interface library.

Vanillin embraces the idea of improving existing DOM elements by utilizing JavaScript to manipulate DOM attributes, tags, and text content.

metaes-db Preview

Persist metaES's heap inside database.

  • Complex derived layers, but not complicated,
  • store JS heap in any peristance layer.


Including but not limited to:

  • metaES Studio,
  • Poliglota app,
  • vanillin-extract,
  • vanillin-browser.

Go to the list.


  • Q: Why not use other interpreter like A, B, C or D
    A: because they are not meta-circular and will not solve many of problems metaES solves.

  • Q: Why not use other interpreter like A, B, C or D
    A: because they are not meta-circular and will not solve many of problems metaES solves.