Loading...
Loading...
Install the iii engine, set up your first worker, and get a working backend running. Use when a user wants to start a new iii project, install the SDK, or needs help with initial setup and configuration.
npx skill4agent add iii-hq/iii iii-getting-startedcurl -fsSL https://install.iii.dev/iii/main/install.sh | shiii --versioniii createcd <your-project>iii --config iii-config.yamlws://localhost:49134http://localhost:3111http://localhost:3113# TypeScript / Node.js
npm install iii-sdk
# Python
pip install iii-sdk
# Rust — add to Cargo.toml
# [dependencies]
# iii-sdk = "*"import { registerWorker, Logger, TriggerAction } from 'iii-sdk'
const iii = registerWorker(process.env.III_URL ?? 'ws://localhost:49134')
iii.registerFunction(
'hello::greet',
async (input) => {
const logger = new Logger()
const name = input?.name ?? 'world'
logger.info('Greeting user', { name })
return { message: `Hello, ${name}!` }
},
{ description: 'Greet a user by name' },
)
iii.registerTrigger({
type: 'http',
function_id: 'hello::greet',
config: { api_path: '/hello', http_method: 'POST' },
})from iii import register_worker, InitOptions, Logger
iii = register_worker(address="ws://localhost:49134", options=InitOptions(worker_name="hello-worker"))
def greet(data):
logger = Logger()
name = data.get("name", "world") if isinstance(data, dict) else "world"
logger.info("Greeting user", {"name": name})
return {"message": f"Hello, {name}!"}
iii.register_function({"id": "hello::greet", "description": "Greet a user by name"}, greet)
iii.register_trigger({"type": "http", "function_id": "hello::greet", "config": {"api_path": "/hello", "http_method": "POST"}})use iii_sdk::{register_worker, InitOptions, Logger, RegisterFunctionMessage, RegisterTriggerInput};
use serde_json::json;
let iii = register_worker("ws://127.0.0.1:49134", InitOptions::default());
iii.register_function(
RegisterFunctionMessage::with_id("hello::greet".into()),
|input: serde_json::Value| async move {
let logger = Logger::new();
let name = input["name"].as_str().unwrap_or("world");
logger.info("Greeting user", Some(&json!({ "name": name })));
Ok(json!({ "message": format!("Hello, {}!", name) }))
},
);
iii.register_trigger(RegisterTriggerInput {
trigger_type: "http".into(),
function_id: "hello::greet".into(),
config: json!({ "api_path": "/hello", "http_method": "POST" }),
})?;curl -X POST http://localhost:3111/hello \
-H "Content-Type: application/json" \
-d '{"name": "iii"}'{"message": "Hello, iii!"}npx skillkit add iii-hq/iii/skillsregisterFunctionregisterTrigger::orders::createorders::validate{ type: 'cron', config: { expression: '0 0 9 * * * *' } }{ type: 'durable:subscriber', config: { topic: 'my-queue' } }iii.trigger()state::getstate::setiii-state-managementiii-queue-processingiii-cron-schedulingiii-http-endpointsiii-observabilityiii-agentic-backendiii-reactive-backendiii-workflow-orchestrationiii-http-endpointsiii-cron-schedulingiii-queue-processingiii-state-managementiii-engine-configiii-getting-started