-
Notifications
You must be signed in to change notification settings - Fork 0
Interesting Facts
Things that make Kyto unusual — and worth knowing.
kura is not written in Rust, C, or Go. The entire compiler toolchain is NASM x86-64 Assembly:
- Windows PE binary (~21 KB)
- Linux ELF binary (similar size)
GitHub reports the repo as ~96% Assembly. That is not a labeling trick — the Rust crates were removed; kura runs without a Rust runtime.
Kyto is not a thin wrapper around another toolchain. It includes:
- Its own grammar (
let,fn,struct,emit, …) - Its own lexer and evaluator in
.asmfiles - Its own config format (
.kyto.config) - Its own project manifest (
kyto.toml)
This is not a fork of Python or a YAML preprocessor with a new name.
| Kyto | Language (like Rust) |
| kura | Compiler (like rustc) |
Release zips are named kyto-* because they are Kyto project releases. The binary inside is kura.
- No network calls in the compiler
- No telemetry
- No cloud account required
- Secrets stay on disk; optional local encryption (ChaCha20-Poly1305)
kura compile never phones home.
A single kura compile can emit simultaneously:
-
.env+.env.example - SQL user seeds
- TypeScript constants
- JSON user lists
- Bash deploy export scripts
Most stacks need 3–5 separate tools or copy-paste for this.
config_only = true means operators edit .kyto.config like a simple flat file — no programming required.
DOMAIN app.example.com
USERS alice bob
Power users can add .kyto later without changing the workflow.
Both .kyto and .kyto.config use + for comments — visually distinct from # (shell) and // (JS), so mixed repos stay readable.
kura encrypt / kura decrypt use ChaCha20-Poly1305 (RFC 8439) implemented in crypto.asm — compatible with the original design, no OpenSSL dependency in the hot path.
Windows and Linux share:
-
lexer.asm,kyto_eval.asm,crypto.asm,config.asm,emit_*.asm
Only entry points and I/O differ:
-
kura.asm+win_io.asm(Windows) -
kura_linux.asm+linux_io.asm(Linux)
GitHub Actions compiles kura on Ubuntu and Windows for every push to main. Releases publish:
- Zip archives (Windows + Linux)
-
ghcr.io/voidmute/kytocontainer
| Tool | What it does | Kyto difference |
|---|---|---|
| dotenv |
.env files only |
Kyto also emits SQL, TS, deploy |
| Helm values | K8s config | Kyto is local-first, any stack |
| Dhall / CUE | Config languages | Kyto targets app dev artifacts directly |
| Terraform | Infrastructure | Kyto focuses on app env + users + deploy exports |
Kyto sits in the "compile my app config" niche, not "provision cloud resources."
The journey (visible in git history):
- Early toolchain (including Rust) proved the design
- Full port to NASM Assembly
- Rust removed — Assembly-only repo
- Linux port, crypto, CI, releases, wiki
Projects can run Kyto in config_only mode to generate portal env, users, and deploy scripts from .kyto.config. See examples/minimal in the repository for a minimal working setup.
Honest roadmap items:
- Full
emit env(build_env(...))eval parity for random secrets merge -
kura init --name/kura compile --entryCLI flags - Richer
.kytocontrol flow in evaluator
See Architecture and the asm roadmap.
When you run kura init, every scaffolded file is stamped with a Kyto was here comment — the compiler’s way of marking a fresh Kyto project:
| File | Stamp |
|---|---|
kyto.toml |
# Kyto was here |
.kyto.config.example |
+ Kyto was here |
kyto/main.kyto |
+ Kyto was here |
README.md (if new) |
<!-- Kyto was here --> |
docs/KYTO.md (if new) |
<!-- Kyto was here --> |
.gitignore (if new) |
# Kyto was here |
Existing README.md or .gitignore files are left untouched so kura init never overwrites your work. The success message prints initialized Kyto project (Kyto was here).
| Fact | Detail |
|---|---|
| Compiler size | ~21 KB NASM binary |
| Platforms | Windows x86-64, Linux x86-64 |
| Repo language split | ~96% Assembly on GitHub |
One kura compile
|
.env, SQL, JSON, TypeScript, deploy script |
| Network at compile time | None |
Kyto is a small, self-contained toolchain aimed at teams that want one local compile step instead of maintaining parallel config in several formats.