OPENLZT

Automate lzt.market.
In the open.

Bumps your listings and threads and buys on your terms — without a line of code. The stand runs on your own server and stays yours, and spends no real money until you switch the test market off.

$curl -sSL open-lzt.dev/get/demo.sh | sudo bash

The main path: one command on a clean server — installs the stand, then walks you through it. Below is just the SDK, if you want code rather than a stand.

View on GitHub$pip install pylzt
Build your install command
Market mode
testnet is a mock — nothing is spent
TLS without a domain
self-signed certificate on a bare IP
Domaintogether with the email it enables HTTPS via Let’s Encrypt
Email for Let’s Encrypt
Telegram bot tokennever written to the link — it is a secret
Admin idscomma separated; without them the bot does not start
curl -sSL https://open-lzt.dev/get/all.sh | sudo bash -s -- --market-mode testnet
Live map of the stand — click a node to jump to its project
10projects in the ecosystemtestnetby default4event transports29tools in the MCP server

One stand.
Ten bricks.

Every project stands alone: take one brick or bring up the whole stand. At the bottom sits the typed SDK; everything else rests on it.

Foundation

pylzt

A typed async framework over the lzt.market API, the lolzteam forum and AntiPublic. Token pool, rate limits and proxies out of the box. Generated from the official OpenAPI spec. The sync client is the same engine, not a second implementation.

Python · async3 namespaces: market · forum · antipublicOpenAPI codegen
Install
$pip install pylzt
In codeClientConfig.for_testnet()Category.STEAM
Against the mock no token is needed.
python — pylzt
Safe by default

lzt-testnet

A FastAPI mock of the lzt.market API surface. An offline twin every project in the stand runs against — no token, no real market, no risk. Flip the switch and watch where the requests land.

FastAPIno tokenoffline
Install
$git clone .../lzt-testnet
$uv run python -m lzt_testnet
Flags--host 127.0.0.1--port 8000
In tests it comes up in-process via uvicorn.
testnet · безопасно
GET127.0.0.1:8765/market/me200
POST127.0.0.1:8765/market/bump200
GET127.0.0.1:8765/market/payments200
Деньги не тратятся: все запросы идут в мок.
Event engine

lzt-eventus

Polls the market and turns it into a durable, replayable event log. Anyone subscribes to that log — your own process, a webhook on another host, an SSE/WS stream, a cron poller. Each gets its own cursor, catch-up after downtime, retries and a DLQ.

durable log4 transportson top of pylzt
Install
$git clone .../lzt-eventus lzt-core
$scripts/quickstart.sh
$uv run python -m lzt_eventus run
Flags--dry-run
The stack comes up from deploy/docker-compose.yml. With --dry-run it polls and diffs but writes nothing.
eventus — live
12:04:01order.paid#8412 · аккаунт продан за 1,250.00 ₽
12:04:07item.bumpedлот #5531 поднят
12:04:16message.newпокупатель: «Данные пришли, спасибо»
12:04:22item.viewedлот #5531 · 12 просмотров/мин
12:04:30payment.outвывод 3,000.00 ₽ подтверждён
RESTWEBHOOKSSEWS
No-code automation

auto-lzt

A server-side automation engine. You describe the job — “bump my lots every day” — as a flow graph and the engine runs it on schedule. React Flow canvas, extended by owner-trusted Python plugins.

flow graphsReact Flow canvasowner plugins
Install — the whole stand in one script
$curl -sSL open-lzt.dev/get/all.sh | sudo bash
$pnpm --dir frontend dev
The canvas comes up on localhost:5173. Building the panel needs node 20+ and pnpm.
auto-lzt — flow
  1. каждый деньтриггер
  2. поднять лотыдействие
  3. проверить статусусловие
  4. уведомитьдействие
flow: bump-daily · исполняется по расписанию
Client for the engine

lzt-eventus-sdk

Async client for the engine’s management API: subscriptions, polling, webhook signature verification. Three lines connect your service to the bus — the cursor and catch-up are the engine’s job.

subscriptionssignature verificationpoll · webhook · SSE · WS
Install
$pip install lzt-eventus-sdk
$pip install lzt-eventus-sdk[ws]
TransportsWEBHOOKSSEWEBSOCKET
The WebSocket source lives in a separate extra.
python — eventus-sdk
from lzt_eventus_sdk import ManagementClient from lzt_eventus_sdk.types import SubscriptionTransport async with ManagementClient("http://127.0.0.1:8080") as mc: await mc.create_subscription( transport=SubscriptionTransport.WEBHOOK, url="https://my.app/hook", )
webhook signature — verified
For dev agents

lzt-dev-mcp

29 tools for an AI agent: send and test raw API requests, drive auto-lzt scenarios and eventus subscriptions, introspect the API surface without grepping sources. Testnet by default — production is hard-blocked.

MCP · 29 toolstestnet-firstAPI introspection
Run
$uv run python -m lzt_dev_mcp --http --port 8765
Flags--http--port 8765
Point your agent at http://127.0.0.1:8765 as an MCP server.
agent — lzt-dev-mcp
Подними мои лоты и покажи баланс.
tool: auto_lzt.run_flow("bump") · testnet
Готово: 14 лотов подняты. Баланс 2,410.00 (testnet).
Extension catalogues

lzt-flows + plugins

lzt-flows — a community catalogue of ready scenarios: autobuy for Steam, Riot, Supercell, Fortnite, Telegram — and a sniper across any of 21 categories. lzt-plugins — executable owner-trusted Python plugins: nodes, routers, handlers.

9 catalogue modulesmanifest + flow.jsonPR catalogue
Install a module
bot/import bump-daily
$install-flow.sh --module steam-autobuy --run
Parameters--module steam-autobuy--param max_price=10--param count=1--run
In the bot: /modules lists, /import installs.
каталог модулей
steam-autobuyАвтовыкуп аккаунтов Steam
riot-autobuyValorant и League of Legends
sniper-autobuyСнайпер по любой из 21 категории
bump-dailyЕжедневный подъём своих лотов
Design system

lzt-ui

A library of building blocks in the LZT visual language: plain CSS and 150 lines of vanilla JS. No build step, no dependencies, no utility framework. The same CSS is consumed by plain HTML and by React components alike.

plain CSSiconszero dependencies
Include
html<link rel="stylesheet" href="lzt-ui.css">
html<script src="lzt-ui.js"></script>
html<script src="lzt-icons.js"></script>
lzt-ui — tokens
палитра
accent-500#3ddc55accent-600#2cb244accent-700#1a8a31surface-3#1a1a1esurface-2#151518surface-1#111113
компоненты
Кнопкачипстатус
The whole stand at once

open-lzt

The ecosystem monorepo: eight projects as git submodules under one roof. One clone and the whole stand is yours, from the SDK to the panel. Install and update ship as its own scripts.

8 submodulesdocker composeinstall · update
Install
$curl -sSL open-lzt.dev/get/all.sh | sudo bash
$git clone --recursive .../open-lzt.git /opt/open-lzt
Operationslogsstopwipe with data
Without -v the Postgres and Redis data survive a reinstall.
shell
# весь стенд одной командой $ curl -sSL https://open-lzt.dev/get/all.sh | sudo bash # скрипт сам клонирует репозиторий в /opt/open-lzt
projects/pylztprojects/testnetprojects/eventusprojects/eventus-sdkprojects/flowprojects/mcpprojects/lzt-uilzt-flows

Up and running in a minute

Every line is clickable — it copies in full.

You need a server running Debian or Ubuntu with systemd and root access — any $4/mo VPS will do. We suggest 2 GB of RAM or more: the stand brings up Postgres, Redis and three services. The script installs Docker itself.

SDK only
$ pip install pylzt

Join us on GitHub

github.com/open-lzt
Ten projects that stack on one another. At the bottom sits the typed SDK; everything else rests on it. Take one brick or the whole stand in one script.