> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kuru.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Quick Start

> Get up and running with the Python Market Maker SDK

## Installation

```bash theme={null}
pip install kuru-sdk-py
# or
uv add kuru-sdk-py
```

## Configuration

The SDK uses two files: a `config.toml` for all non-secret settings, and a `.env` for your private key.

**`.env`** — secrets only:

```bash theme={null}
PRIVATE_KEY=0x...
```

**`config.toml`** — everything else:

```toml theme={null}
[market]
market_address = "0x..."

[connection]
rpc_url = "https://rpc.monad.xyz"
rpc_ws_url = "wss://rpc.monad.xyz"
kuru_ws_url = "wss://ws.kuru.io/"
kuru_api_url = "https://api.kuru.io/"

[transaction]
timeout = 120
gas_buffer_multiplier = 1.35
local_gas_estimation = false

[websocket]
max_reconnect_attempts = 5
reconnect_delay = 1.0
heartbeat_interval = 30.0
rpc_logs_subscription = "monadLogs"  # or "logs" for committed-state only

[order_execution]
post_only = true
auto_approve = true
use_access_list = true
```

<Warning>
  Never commit your `.env` file to version control. Add it to `.gitignore`.
</Warning>

## Core Concepts

Kuru market making interacts with three on-chain components:

| Component                                 | Description                                                                                                                           |
| ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| **Orderbook contract** (`MARKET_ADDRESS`) | Holds the limit orderbook and emits `OrderCreated`, `OrdersCanceled`, and `Trade` events.                                             |
| **Margin account contract**               | Holds your trading balances. Orders consume margin balances, not wallet balances.                                                     |
| **MM Entrypoint (EIP-7702 delegation)**   | Your EOA is authorized to delegate to the MM Entrypoint contract, enabling batch cancel and place operations in a single transaction. |

## Key SDK Objects

The SDK provides three main objects:

* **`KuruClient`** - The main facade for execution, event listeners, and orderbook streaming.
* **`User`** - Deposits/withdrawals, approvals, and EIP-7702 authorization.
* **`Order`** - Your local representation of a limit order or cancel.

## Create a Client

Use `ConfigManager` to load configuration from `config.toml` with sensible defaults:

```python theme={null}
from dotenv import load_dotenv

from kuru_sdk_py.client import KuruClient
from kuru_sdk_py.configs import ConfigManager

load_dotenv()  # loads PRIVATE_KEY from .env

configs = ConfigManager.load_all_configs()  # reads everything else from config.toml

client = await KuruClient.create(**configs)
```

<Tip>
  `load_all_configs()` automatically loads `config.toml`, fetches the market's on-chain params, and sets `price_precision`, `size_precision`, `tick_size`, and token addresses/decimals/symbols. No extra flags needed.
</Tip>

## Fund Margin

Orders are backed by margin balances. Deposit base and/or quote before quoting:

```python theme={null}
await client.user.deposit_base(10.0, auto_approve=True)
await client.user.deposit_quote(500.0, auto_approve=True)

margin_base_wei, margin_quote_wei = await client.user.get_margin_balances()
```

<Warning>
  If you quote both sides, keep both base and quote margin funded; otherwise your orders will revert.
</Warning>

## Next Steps

Now that you have a client and funded margin, follow the [Market Making Guide](/sdk/py-sdk-market-making) to build your bot.
