Skip to content

Getting Started

github-actions[bot] edited this page Jun 29, 2026 · 3 revisions

Getting Started

This tutorial takes you from zero to a working Kyto project in about 10 minutes.


Step 0: What gets installed

Name What it is
Kyto The language and project format
kura The compiler binary used in the terminal

Kyto is not a separate installable binary — projects use kura to compile Kyto sources and config.


Step 1: Install kura

Pick one method.

Option A — GitHub Release (fastest)

  1. Open Releases
  2. Download:
    • Windows: kyto-*-windows-x86_64.zip → contains kura.exe
    • Linux: kyto-*-linux-x86_64.zip → contains kura
  3. Run kura install (or kura.exe install on Windows) to copy into ~/.local/bin

Option B — Docker (Linux)

docker pull ghcr.io/voidmute/kyto:latest
docker run --rm -v "$PWD:/work" -w /work ghcr.io/voidmute/kyto:latest --version

Option C — Build from source

git clone https://github.com/voidmute/kyto.git
cd kyto
./asm/build.sh          # Linux (needs nasm)
# or .\asm\build.ps1    # Windows
./bin/kura-asm install

Verify:

kura --version
# kura 0.5.0-asm

Step 2: Create a project

mkdir my-portal && cd my-portal
kura init --name my-portal
cp .kyto.config.example .kyto.config

After kura init, the project contains:

my-portal/
  kyto.toml
  .kyto.config.example
  .kyto.config          ← create from `.kyto.config.example`
  kyto/main.kyto        ← optional advanced layer

Step 3: Edit .kyto.config

This is the human-friendly file edited day to day. Comments start with +.

+ Production portal
DOMAIN portal.example.com
ADMIN alice
USERS alice bob guest
DATABASE_URL postgresql://localhost/portal
REPO_DIR /var/www/portal
NODE_ENV production

Rules:

  • DOMAIN host → compiler sets APP_URL=https://host
  • USERS / ADMIN → login names (lowercased automatically)
  • Any other KEY value → becomes an environment variable
  • REPO_* keys → deploy script exports

Step 4: Configure output paths (kyto.toml)

Default manifest:

[project]
name = "my-portal"
config_only = true    # ← recommended for beginners: skip .kyto files

[config]
file = ".kyto.config"

[emit.env]
file = ".env"
example = ".env.example"

[emit.users]
sql = "generated/users.sql"
json = "generated/users.json"
typescript = "generated/users.ts"

[emit.deploy]
script = "generated/deploy-env.sh"

Set config_only = true if you only use .kyto.config90% of projects never need .kyto source files.


Step 5: Compile

kura compile

Generated files (paths from kyto.toml):

File Contents
.env Full secrets for local dev
.env.example Redacted template safe for git
generated/users.sql INSERT INTO users ...
generated/users.json ["alice","bob","guest"]
generated/users.ts export const APP_USERS = [...]
generated/deploy-env.sh export KEY=value for servers

Check without writing:

kura check

Step 6: Try the minimal example

git clone https://github.com/voidmute/kyto.git
cd kyto/examples/minimal
kura compile
ls generated/

Step 7: Add to .gitignore

.env
.kyto.config
kyto/local.kyto
generated/

Commit .env.example and your kyto.tomlnever commit real secrets.


What next?

Goal Page
Write custom compile logic Language Tutorial
Every kyto.toml key Configuration Guide
Encrypt a secrets file Encryption & Privacy
How kura is built in ASM Interesting Facts

Daily workflow (Kyto Lite)

edit .kyto.config  →  kura compile  →  commit generated/ or let CI compile

That is the entire loop. No cloud dashboard. No vendor lock-in.

Clone this wiki locally