Takt Protocol is a decentralized automation and keeper protocol built natively for Stellar Soroban smart contracts. It enables developers, DAOs, and protocols to schedule recurring function executions, liquidate undercollateralized loans, harvest yield, and automate contract state maintenance without relying on centralized servers.
This repository (takt-app) contains the off-chain architecture: the official TypeScript SDK, the Go keeper node daemon, and the web application interface.
The on-chain smart contracts (keeper-registry, bounty-vault, and job-engine) are maintained in takt-protocol/takt-contract.
+-----------------------------+
| Web Dashboard (React) |
| (apps/web) |
+--------------+--------------+
|
v
+-----------------------------+ +-----------------------------+
| Go Keeper Node | | TypeScript SDK (@takt) |
| (services/keeper) |-->| (packages/sdk) |
+--------------+--------------+ +--------------+--------------+
| |
+----------------+----------------+
|
v
+---------------------------------+
| Stellar Soroban Network |
| (keeper-registry, vault, engine|
+---------------------------------+
| Directory | Component | Language / Framework | Description |
|---|---|---|---|
packages/sdk |
@takt-protocol/sdk |
TypeScript / @stellar/stellar-sdk |
Client library for constructing Soroban transactions, parsing error codes, converting stroops, and calculating bounty fee splits. |
services/keeper |
takt-keeper |
Go 1.22 | Lightweight daemon that polls the Soroban RPC for executable automation jobs, signs transactions, and maintains contract TTLs. |
apps/web |
@takt-protocol/web |
React 18 / Vite / Tailwind CSS | Interactive decentralized app for scheduling jobs, depositing vault collateral, staking as a keeper, and inspecting contracts. |
Clone the repository and install workspace dependencies:
git clone https://github.com/takt-protocol/takt-app.git
cd takt-app
npm installBuild and test the SDK package:
npm run build --workspace=@takt-protocol/sdk
npm run test --workspace=@takt-protocol/sdkimport { TaktClient, toStroops, calculateBountySplit } from "@takt-protocol/sdk";
const client = new TaktClient({
network: "testnet",
});
// Build a create_job transaction descriptor
const call = client.buildCreateJobCall({
owner: "GBKGRYZZEELD6POCG5E3MNMA3CT7OKF45CUX3FUDSJH6NJXAMTPXIYRS",
targetContract: "CDLZFC3SYJYDZT7K67VZ75HPJVIEUVNIXF47ZG2FB2RMQQVU2HHGCYSC",
targetFn: "harvest_yield",
intervalSeconds: 300,
bountyPerRun: toStroops("5.0"),
maxRuns: 100,
initialFunding: toStroops("50.0"),
});
// Calculate 5% protocol fee split (500 bps)
const { keeperReward, protocolFee } = calculateBountySplit(toStroops("5.0"), 500);The keeper node connects to the Soroban RPC network, monitors active jobs, and claims bounties.
Build the binary:
cd services/keeper
go build -o takt-keeper .Configuration environment variables:
| Variable | Default | Description |
|---|---|---|
TAKT_RPC_URL |
https://soroban-testnet.stellar.org |
Soroban JSON-RPC endpoint |
TAKT_KEEPER_SECRET |
(Required) | Stellar secret key (S...) for keeper execution and signing |
TAKT_POLL_INTERVAL_SECONDS |
10 |
Interval between job state polling cycles |
TAKT_API_PORT |
8080 |
Port for the /health and metrics HTTP server |
TAKT_KEEPER_REGISTRY_ID |
CDSBDXYELFFHM7XMG4D4BXEVETOHQDWPQOTQLPRHGTTVW7DTNODHIIZN |
KeeperRegistry contract ID |
TAKT_BOUNTY_VAULT_ID |
CDDIJAZCXR7TWSTI4B2FSE7MCXFKH2JVOBT4WELSSJLZHV5XQ4PKHEGO |
BountyVault contract ID |
TAKT_JOB_ENGINE_ID |
CC6ZSDYSGFAZDJ2FP2RT2ZV6NUZN4OFEWYNIS3CYOG2CBG7DIJDCWYOT |
JobEngine contract ID |
Run the development server locally:
npm run dev --workspace=@takt-protocol/webOr build for production deployment:
npm run build --workspace=@takt-protocol/webTakt Protocol smart contracts run on Stellar Soroban:
- Keeper Registry: Handles keeper staking, unbonding cooldowns, and slashes.
- Bounty Vault: Holds collateral escrow for scheduled jobs and enforces 5% protocol fee splits.
- Job Engine: Evaluates job execution intervals, verifies keeper eligibility, and invokes target contracts.
| Contract | Address | Explorer |
|---|---|---|
keeper-registry |
CDSBDXYELFFHM7XMG4D4BXEVETOHQDWPQOTQLPRHGTTVW7DTNODHIIZN |
Stellar.Expert |
bounty-vault |
CDDIJAZCXR7TWSTI4B2FSE7MCXFKH2JVOBT4WELSSJLZHV5XQ4PKHEGO |
Stellar.Expert |
job-engine |
CC6ZSDYSGFAZDJ2FP2RT2ZV6NUZN4OFEWYNIS3CYOG2CBG7DIJDCWYOT |
Stellar.Expert |
token (Wrapped Native XLM) |
CDLZFC3SYJYDZT7K67VZ75HPJVIEUVNIXF47ZG2FB2RMQQVU2HHGCYSC |
Stellar.Expert |
- Testnet Alpha (Unaudited): Currently operating on Stellar Testnet (
Test SDF Network ; September 2015). - SDK & Web Transaction Signing:
@takt-protocol/sdkconstructs validated contract call descriptors (TaktContractCall) and queries Soroban RPC; full XDR transaction assembly/signing in the Go keeper (services/keeper) and browser wallet signing via@stellar/freighter-apiinapps/webare active roadmap items tracked in open GitHub issues.
Please review SECURITY.md for information regarding vulnerability reporting and our security policy.
Contributions are welcomed! See CONTRIBUTING.md for local development setup and pull request guidelines.
This project is licensed under the MIT License.