Metadata-Version: 2.4
Name: pandastack
Version: 0.1.0
Summary: Python SDK for PandaStack — open-source Firecracker microVM sandboxes
Project-URL: Homepage, https://pandastack.ai
Project-URL: Repository, https://github.com/pandastack-io/pandastack
Project-URL: Documentation, https://docs.pandastack.ai
Project-URL: Issues, https://github.com/pandastack-io/pandastack/issues
Author: PandaStack
License-Expression: Apache-2.0
License-File: LICENSE
Keywords: ai-agents,code-interpreter,firecracker,microvm,pandastack,sandbox
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: System :: Distributed Computing
Classifier: Topic :: System :: Emulators
Requires-Python: >=3.9
Requires-Dist: requests>=2.31
Provides-Extra: dev
Requires-Dist: pytest>=7; extra == 'dev'
Requires-Dist: responses>=0.24; extra == 'dev'
Requires-Dist: websocket-client>=1.6; extra == 'dev'
Provides-Extra: multiplayer
Requires-Dist: websocket-client>=1.6; extra == 'multiplayer'
Description-Content-Type: text/markdown

# PandaStack Python SDK

Python SDK for PandaStack, open-source Firecracker microVM sandboxes for AI agents and code execution.

## Install

```bash
pip install pandastack
```

## Auth

Create a token in the PandaStack dashboard, then export it:

```bash
export PANDASTACK_TOKEN=psk_...
# Optional for self-hosted/dev:
export PANDASTACK_API=http://localhost:8080
```

`Client()` also reads `~/.config/pandastack/config.json` when environment variables are unset.

## Quickstart

```python
from pandastack import Sandbox

with Sandbox.create(template="code-interpreter") as sb:
    result = sb.run_code("print(2 + 2)")
    print(result.stdout.strip())
```

## Explicit client

```python
from pandastack import Client

client = Client(api_key="psk_xxx", api_url="https://api.pandastack.ai")
sb = client.sandboxes.create(template="code-interpreter")
try:
    print(sb.exec("ls -la").stdout)
finally:
    sb.kill()
```

## Filesystem

```python
sb.filesystem.write("/home/panda/hello.txt", "hello")
print(sb.filesystem.read("/home/panda/hello.txt"))
sb.filesystem.upload("local.csv", "/home/panda/local.csv")
sb.filesystem.download("/home/panda/out.png", "out.png")
```

## Commands and logs

```python
result = sb.commands.run("python3 --version", timeout=10)
for line in sb.logs(stream="both", follow=False):
    print(line)
```

## Lifecycle

```python
sb.set_ttl(600)
sb.set_persistent(True)
print(sb.lifecycle())
sb.pause()
sb.resume()
snapshot_id = sb.snapshot()
```

## Templates

```python
from pandastack import templates

print(templates.list())
build = templates.build("my-template", rootfs_tar="rootfs.tar", size_mb=2048)
print(build.status)
templates.delete("my-template")
```

## Tokens

```python
from pandastack import tokens

new_token = tokens.create("ci")
print(new_token.token)
for token in tokens.list():
    print(token.prefix, token.name)
tokens.revoke(new_token.prefix)
```

The old `pandastack` import remains as a deprecated compatibility alias. Use `pandastack` for new code.
