JINN

Summon an agent for anything.

Define a function once. Run it with a prompt and a folder,
and get back the files you asked for.

$ jinn run support-triage --in ./ticket
scroll
01 define

Write a function.

A function is one JSON file. It names the model, the tools the agent can use, the files it receives and the files it must return.

Publish it with one command. Each publish makes a new version, and every run records the version it used.

function.json
{
  "provider": "prv_anthropic@latest",
  "system_prompt": "You answer billing tickets.",
  "tools": ["bash", "read", "write", "web_search"],
  "custom_tools": [{
    "name": "lookup_customer",
    "url":  "https://support.example/tools/customer", …
  }],
  "input_manifest": [
    { "path": "ticket.json", "max_bytes": 1000000 }
  ],
  "output_manifest": [
    { "path": "reply.md",     "max_bytes": 100000 },
    { "path": "actions.json", "max_bytes": 100000 }
  ],
  "timeout_minutes": 30
}

$ jinn publish support-triage ./function.json
→ support-triage@14
02 run

Run it with a prompt.

Send a prompt and a folder. The agent works until the files the function names are ready. Then Jinn returns them.

If a run cannot finish, you get the reason.

  • succeededthe files you asked for
  • inputthe folder did not match the function
  • no_submissionthe agent stopped before it finished
  • timeoutthe run used all its time
  • providerthe model returned an error
  • infrastructureJinn could not complete the run
  • not_startedthe run did not start within 24 hours
jinn

    
03 triggers

Call it from anywhere.

Anything that can send an HTTP request can start a run. A webhook can answer a ticket. A cron job can write the Monday report. A pull request can get a review.

Each caller gets a token and calls the same API.

04 the agent

Everything the agent needs.

I

A computer

The agent gets a shell, a file system, a browser and a screen. It can install what it needs.

II

Your tools

Give it up to 16 of your own HTTPS endpoints. Jinn calls each one with its own secret.

III

Your model

Choose Anthropic, OpenAI or xAI for each function. A new key reaches every function that uses the provider.

IV

Secrets

Send a secret once when you publish. Jinn never shows it again, in any response or log.

V

A clean start

Every run starts with an empty workspace and your input folder. Nothing carries over from another run.

VI

A full log

Follow a run while it works: every message, tool call and result. Logs and outputs stay for 30 days.

05 api

The API.

The CLI and your services use the same HTTP API. Start a run, follow its log and download its files.

$ jinn run support-triage \
    --prompt "Ticket #4812: charged twice" \
    --in ./ticket --out ./result
→ inv_01JQ8ZC4.1  succeeded  38.4s

$ jinn logs inv_01JQ8ZC4.1 --follow
$ jinn runs --function support-triage --watch

Start with one function.