Quickstart
Install the CLI, write a tool, run it locally, deploy it and call it.
Write a tool, run it on your machine, deploy it and call the deployed copy.
You need macOS or Linux, Bun 1.4 or newer, and a Zenitya account. Zenitya is in private beta: if you have no invitation yet, request one at zenitya.com/early-access.
Rather have your coding agent do it? Paste the setup prompt into Claude Code, Codex, Cursor or Pi, and it follows these steps with you.
1. Install the CLI
curl -fsSL https://zenitya.dev/install.sh | shThe installer verifies the release signature and puts zenitya and its short
name zya in ~/.zenitya/bin, adding it to your PATH. Open a new terminal,
then check it:
zya --version2. Sign in
zya loginThis opens Google sign-in in your browser and asks which organization to use.
Add --no-browser to print the link instead. zya whoami shows who commands
run as.
3. Create a project
zya new my-tools
cd my-tools
bun installzya new writes zenitya.json, src/index.ts with an example echo tool,
package.json, tsconfig.json and an AGENTS.md that points coding agents at
these docs. src/index.ts looks like this:
import { Project } from "@zenitya/sdk";
import { s } from "@zenitya/sdk/schema";
const project = new Project();
export default project;
project.tool("echo", {
title: "Echo",
description: "Return a message unchanged.",
schema: s.object({
message: s.string().describe("Message to return."),
}),
outputSchema: s.object({
message: s.string(),
}),
hints: { readOnlyHint: true, idempotentHint: true },
execute: async ({ message }) => ({ message }),
});4. Run it locally
zya exec echo --local --data '{"message":"hello"}'The output prints on stdout as JSON. Local runs load .env from the project
directory, so you can try a tool against real credentials before deploying.
5. Deploy
zya deployDeploying needs an owner or admin role. The CLI uploads your source, Zenitya installs dependencies, bundles and checks your tools remotely, and the new version goes live only if every step passes.
6. Grant the tool and call it
A deployed tool is callable only by groups it is granted to. In the
Zenitya app, open Groups, pick a group you are in
(everyone is in Default) and grant my-tools.echo. Then:
zya tools list
zya exec echo --data '{"message":"hello"}'Without --local, exec runs the deployed copy.
Next
- Connecting agents over MCP: call the tool from Claude, Codex or Cursor.
- Writing tools: schemas, hints, logging and errors.
- Secrets and network access: call real APIs from a deployed tool.
zenitya