Skip to main content

ni_sh_a.char-IDE

Run any language. Anywhere.

A polyglot execution engine, a standalone IDE, and a one-line embeddable component — in one Apache-2.0 package.

CI PyPI npm pub Maven Central License Languages PRs welcome

Try it live →  ·  Docs  ·  Add a language  ·  Roadmap


pip install nishachar-ide && nishachar

That opens a full IDE in your browser that runs 62 languages — Python, Rust, Go, C++, Haskell, COBOL, Brainfuck and SHE — plus a real terminal for the system commands your code needs.

Or drop it into any web page, in one line:

<script type="module" src="https://cdn.jsdelivr.net/npm/@nishachar/ide"></script>
<nishachar-ide language="she"></nishachar-ide>

That snippet has no backend. It executes in the visitor's browser tab.

Available everywhere you already work

Ecosystem Install What you get
Python pip install nishachar-ide The engine, the CLI, the IDE, the server
npm npm i @nishachar/ide <nishachar-ide> web component
Dart / Flutter dart pub add nishachar_ide Typed client + the registry, offline
Maven / Gradle io.github.ni-sh-a-char:nishachar-ide Kotlin & Java client, zero dependencies
Docker ghcr.io/ni-sh-a-char/nishachar-ide The server, containerised

Every client ships the same 62-language registry compiled in, so language lookup works offline and before any backend exists.


Why this exists

Every online IDE has the same architecture: your code is POSTed to somebody's server, run in somebody's container, and billed to somebody's credit card. That works right up until the free tier ends or the project is abandoned.

ni_sh_a.char-IDE inverts it. Code always runs on hardware that is already paid for — the visitor's own browser, or your own machine. There is no central runner to abuse, meter, or shut down. The hosted demo costs its maintainer exactly nothing, and always will.

Three ways to run code

Tier Where it runs Languages Setup
Browser the visitor's tab, via WebAssembly Python, SHE, JavaScript, TypeScript none — it's a <script> tag
Local your machine, your toolchains anything you have installed pip install nishachar-ide
Docker a locked-down container all 62, safely Docker running

One interface covers all three, and auto picks per language: your installed toolchain when you have it, a container when you don't.

Use it three ways

As an IDE

nishachar                      # the full IDE, in your browser
nishachar run hello.she        # language inferred from the extension
nishachar run -l rust -c 'fn main(){println!("hi")}'
nishachar languages            # what's available, and what's installed

As an embeddable component — a native Web Component, so it works unmodified in React, Vue, Svelte, Angular, Astro, plain HTML, Electron and Tauri:

<nishachar-ide
  language="python"
  theme="dark"
  endpoint="http://localhost:8777"><!-- omit endpoint to run in-browser -->
</nishachar-ide>
document.querySelector('nishachar-ide')
  .addEventListener('result', e => console.log(e.detail.stdout));

As a Python library

import nishachar

result = nishachar.run('say "Hello from SHE!"', "she")
print(result.stdout, result.exit_code, result.duration_ms)

nishachar.run_file("script.rs", runner="docker", timeout=30)

A language is data, not code

No language has an integration written for it. Every one is a single JSON file:

{
  "id": "python",
  "name": "Python",
  "extensions": [".py"],
  "image": "python:3.12-slim",
  "run": ["python", "{file}"],
  "template": "print(\"Hello!\")\n"
}

That is the whole integration. Adding a language is an 8-line pull request that touches no source code — and it is the best first contribution this project has to offer. Start here.

All 62 languages

Ada · Assembly (NASM) · AWK · Bash · Brainfuck · Bun · C · C# · C++ · Clojure · COBOL · CoffeeScript · Common Lisp · Crystal · D · Dart · Deno · Elixir · Elm · Erlang · F# · Fish · Fortran · Gleam · Go · Groovy · Haskell · Haxe · Io · Java · JavaScript · Julia · Kotlin · Lua · Nim · Nushell · Objective-C · OCaml · Pascal · Perl · PHP · PowerShell · Prolog · Python · R · Racket · Raku · Ruby · Rust · Scala · Scheme · SHE · Solidity · SQL (SQLite) · Swift · Tcl · TypeScript · V · Vala · Wren · Zig · Zsh

Security

Executing arbitrary code is this project's job, so the boundaries are drawn explicitly rather than waved away:

  • Docker tier — no network, read-only root filesystem, all capabilities dropped, no-new-privileges, and hard memory/CPU/process caps. Packages a language needs are installed at image build time, so the network is gone by the time your code runs.
  • Local tier — runs as you, with no isolation. That is correct for your own code and wrong for anyone else's, and the docs say so plainly.
  • Every tier — wall-clock timeout, output byte cap, and a full process-tree kill on timeout.
  • The server — refuses to serve the unsandboxed runner on a non-loopback address, validates the Host header against DNS rebinding, and ships with CORS closed and the terminal disabled.

Read SECURITY.md for the full model, including what it does not protect against.

Contributing

Good first issues are labelled good first issue, and the easiest of them is adding your favourite language. See CONTRIBUTING.md and ARCHITECTURE.md.

Support this project

ni_sh_a.char-IDE is free, Apache-2.0, and architected so it costs nothing to run — there is no hosted runner to pay for, and there never will be. If it saves you time, you can buy me a coffee.

Buy me a coffee

Starring the repo helps just as much — it is how other people find it.

License

Apache License 2.0 — commercial use, modification and distribution permitted, with an explicit patent grant.

Built by Piyush Mishra · If this is useful, a ⭐ helps others find it.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nishachar_ide-2.0.0.tar.gz (50.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nishachar_ide-2.0.0-py3-none-any.whl (60.1 kB view details)

Uploaded Python 3

File details

Details for the file nishachar_ide-2.0.0.tar.gz.

File metadata

  • Download URL: nishachar_ide-2.0.0.tar.gz
  • Upload date:
  • Size: 50.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for nishachar_ide-2.0.0.tar.gz
Algorithm Hash digest
SHA256 6efaf2d5c77da7ccfd51f87dd37ed572e1edd88a50c84949a7d9afa4153db806
MD5 73ae597bc0d0551bb7d91066297998e7
BLAKE2b-256 c809d4bdcf356caef0c1c668572bec2b9630731a81afbf4281e21050c48e4861

See more details on using hashes here.

Provenance

The following attestation bundles were made for nishachar_ide-2.0.0.tar.gz:

Publisher: release.yml on ni-sh-a-char/ni_sh_a.char-IDE

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nishachar_ide-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: nishachar_ide-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 60.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for nishachar_ide-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 dc703fae186a605fc087a30d8c32e8b9ada5a8917f11a8f2def9deb0fb0f3e9f
MD5 7ab4c8a7cb85f7a044245c347b00f83a
BLAKE2b-256 1bc9347f3a24541ada9afe5a193e87c22affe52b66b2da20d159b128fce9136d

See more details on using hashes here.

Provenance

The following attestation bundles were made for nishachar_ide-2.0.0-py3-none-any.whl:

Publisher: release.yml on ni-sh-a-char/ni_sh_a.char-IDE

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

2.0.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page