Helium LogoPowering Helium

Schedule Tasks on Solana Without the Wait

TukTuk delivers reliable, blazing-fast cron jobs for your Solana applications. Set it, forget it, and watch your tasks execute with precision.

TukTuk Logo
Features

Why Choose TukTuk?

Designed for developers who need reliable, fast, and secure on-chain automation.

Lightning Fast

Execute tasks with minimal latency. TukTuk is optimized for speed at every step of the process.

Precise Scheduling

Set up complex schedules with cron syntax.

Bulletproof Reliability

Built-in redundancy ensures your tasks run on time, every time, with automatic retries.

Developer Friendly

Simple API, comprehensive SDKs, and detailed documentation make integration a breeze.

Security

Smart contracts currently being audited. Use at your own risk.

Cost-Effective

Optimize your Solana operations with efficient task scheduling and execution patterns.

How It Works

Simple Integration, Powerful Results

Get up and running in minutes with our straightforward API.

Get Started with Examples

Explore these practical examples to start building with TukTuk SDK.

import { AnchorProvider, Wallet } from "@coral-xyz/anchor";
import {
  compileTransaction,
  init,
  queueTask
} from "@helium/tuktuk-sdk";
import { Connection, Keypair, PublicKey, TransactionInstruction } from "@solana/web3.js";

// Solana Memo Program ID
const MEMO_PROGRAM_ID = new PublicKey("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr");

// Initialize provider with your wallet and connection
const connection = new Connection("YOUR_RPC_URL", "confirmed");
const wallet = new Wallet(YOUR_KEYPAIR);
const provider = new AnchorProvider(connection, wallet, {
  commitment: "confirmed",
});

// Initialize TukTuk program
const program = await init(provider);
const taskQueue = await initializeTaskQueue(program, "YOUR_QUEUE_NAME");

// Create a simple memo instruction
const memoInstruction = new TransactionInstruction({
  keys: [],
  data: Buffer.from("Hello World!", "utf-8"),
  programId: MEMO_PROGRAM_ID,
});

// Compile the instruction for TukTuk
const { transaction, remainingAccounts } = compileTransaction(
  [memoInstruction],
  []
);

// Queue the task for immediate execution
const { pubkeys: { task }, signature } = await (await queueTask(program, {
  taskQueue,
  args: {
    trigger: { now: {} },
    crankReward: null,
    freeTasks: 0,
    transaction: {
      compiledV0: [transaction],
    },
    description: "Send memo message",
  },
}))
  .remainingAccounts(remainingAccounts)
  .rpcAndKeys();

console.log("Task queued! Transaction signature:", signature);
console.log("Task address:", task.toBase58());
1

Connect

Integrate TukTuk with your dApp or smart contract using our SDK.

2

Schedule

Define when and how often your tasks should run using cron syntax.

3

Relax

TukTuk handles the rest, ensuring your tasks execute reliably and on time.