JOSIE

LATEST: v0.1.0
ONLINE

JOSIE OMNI SECURE INTERACTIVE EXPRESSIONS

At its core: JOSIE is a sandboxed scripting engine that lives inside your compiled applications. It lets you add or change features in your app while it's running, without needing to recompile or restart.

Under the hood: It offers a clean Lisp syntax for humans and a 1:1 JSON format for machines. Write your logic securely, execute it deterministically, and use it to power on-the-fly updates for fullstack web apps, data pipelines, and AI workflows.

INSTALL (RUST)
cargo add josie-core
LISP VS JSON COMPARISON (SAME LOGIC)
01 // 05
01 // HELLO WORLD
JOSIE LISP (RECOMMENDED)
(set client.name "JOSIE")
(set client.msg (util.concat "Hello, " client.name))
client.msg
CANONICAL JSON
["do",
  ["set", "client.name", "JOSIE"],
  ["set", "client.msg", ["util.concat", "Hello, ", ["var", "client.name"]]],
  ["var", "client.msg"]
]
JOSIE LISP
(set client.score 82)
(if (>= client.score 80) "pass" "retry")
CANONICAL JSON
["do",
  ["set", "client.score", 82],
  ["if", [">=", ["var", "client.score"], 80], "pass", "retry"]
]
JOSIE LISP
(def add2 (x) (+ x 2))
(call add2 40)
CANONICAL JSON
["do",
  ["def", "add2", ["x"], ["+", ["var", "x"], 2]],
  ["call", "add2", 40]
]
JOSIE LISP
(set server.people [
  {id: 1 name: "Ana"}
  {id: 2 name: "Bo"}
])
(map server.people { id: item.id displayName: item.name })
CANONICAL JSON
["do",
  ["set", "server.people", [{"id":1,"name":"Ana"},{"id":2,"name":"Bo"}]],
  ["map", ["var", "server.people"], {"id":["var","item.id"],"displayName":["var","item.name"]}]
]
JOSIEML + JOSIE LISP
<h1 j-text="client.title"></h1>
<button @click="counter.inc">+</button>
<script type="josie/script">
(set client.title "Counter")
(set client.count 0)
(def counter.inc ()
  (set client.count (+ client.count 1)))
</script>
JOSIEML + CANONICAL JSON
<h1 j-text="client.title"></h1>
<button @click="counter.inc">+</button>
<script type="application/josie+json">
{"state":{"client":{"title":"Counter","count":0}},
 "program":["def","counter.inc",[],["set","client.count",["+",["var","client.count"],1]]]}
</script>
TARGET ENVIRONMENTS
RUST
AVAILABLE
GO IN DEV
OPENRESTY IN DEV
HASKELL PLANNED
ZIG PLANNED
NIM PLANNED
CRYSTAL PLANNED
C++ PLANNED
BUILT WITH JOSIE