Skip to main content

letta-ceki

Letta toolkit for Ceki — drive a real Chrome session from your Letta agent.

Killer combo. Letta's archival memory + Ceki's profile export = browser sessions that remember themselves across agent restarts. Log in once on Monday, your agent walks straight into the dashboard on Friday — no cookies stored in your code, no second login.

Install

pip install letta-ceki

The squat alias ceki-letta is reserved by the same project and depends on letta-ceki — both resolve to the same symbols.

Architecture

Variant C — structural toolkit. Eleven self-contained Python functions that the Letta agent's own LLM plans across:

Tool What it does
ceki_rent_browser Rent a real Chrome session and return its session_id.
ceki_navigate Open a URL.
ceki_click Click at viewport coordinates. Mouse jitter ON by default.
ceki_type Type into the focused element. Cadence + jitter ON by default.
ceki_scroll Scroll by delta_y pixels.
ceki_screenshot PNG of the current viewport as base64.
ceki_snapshot Screenshot + drained chat messages from the provider.
ceki_chat_send Send a chat message to the human provider (captcha / OTP).
ceki_stop End the session — always call this when done.
ceki_export_profile Killer: export cookies/storage/fingerprint to Letta memory.
ceki_restore_profile Killer: restore a saved profile into a fresh rent.

There is no server-side NL endpoint and no LLM lives inside this package — your Letta agent's own model does the planning.

Register the tools in your Letta workspace

import os
os.environ["CEKI_API_KEY"] = "your_ceki_key"     # https://ceki.me dashboard
os.environ["LETTA_TOKEN"] = "your_letta_token"   # https://app.letta.com/settings/api-keys

from letta_ceki import register_all
tool_ids = register_all()
print(f"Registered {len(tool_ids)} tools.")

Then attach the tools to your agent in the Letta UI, or programmatically:

from letta_client import Letta
client = Letta(token=os.environ["LETTA_TOKEN"])
client.agents.update(agent_id="your_agent_id", tool_ids=list(tool_ids.values()))

The killer combo — persistent sessions

Tell your agent in its persona prompt:

After a successful login, always call ceki_export_profile.
On a fresh rent for a previously-logged-in site, always call
ceki_restore_profile before navigating.

That is the entire setup. Now every login the agent performs is durable:

# Run A — agent logs into your.example.com, then:
ceki_export_profile(session_id, profile_name="your-example")

# Letta restarts. Memory survives.

# Run B — fresh rent on a new browser:
ceki_restore_profile(session_id, profile_name="your-example")
# → cookies, localStorage, sessionStorage, fingerprint all restored
ceki_navigate(session_id, "https://your.example.com/dashboard")
# → already authenticated

See examples/persistent_session.py for an end-to-end runnable demo.

Use responsibly

Use only on sites you own or have authorization to operate on (your own apps, your own dashboards, public data within site Terms of Service, accessibility audits you're responsible for).

License

MIT.

Metadata

Release files for letta-ceki 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for letta-ceki 0.1.0
File Size Uploaded Provenance Actions
letta_ceki-0.1.0.tar.gz 13.2 kB Without provenance Details for letta_ceki-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for letta-ceki 0.1.0
File Interpreter ABI Platform Actions
letta_ceki-0.1.0-py3-none-any.whl Python 3 none any Details for letta_ceki-0.1.0-py3-none-any.whl

Total release size: 21.9 kB

Release files / letta_ceki-0.1.0.tar.gz

Download URL letta_ceki-0.1.0.tar.gz
Size 13.2 kB
Tags Source
SHA-256 checksum
How to use checksums
c4037a7e6e0cfcbc136b3ee7dc970b9adc6dc0e7f9287f59de09f9a721415c5e
BLAKE2b-256 checksum
How to use checksums
6cdbbb33979920fdd707cafb3f78b45ad5370689763596fd339485204f0a5329
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / letta_ceki-0.1.0-py3-none-any.whl

Download URL letta_ceki-0.1.0-py3-none-any.whl
Size 8.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
02412ef5ae23b5f981de3589fe01eccf2a8b9f2ce2fe3ddb8caab8dd9f6760c0
BLAKE2b-256 checksum
How to use checksums
29308c79ac3f994797f7ee6de6f49eca49ec8812ccde9ae1be09446a2918b263
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Security for letta-ceki 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page