Skip to main content

Letta tool for Ceki — real Chrome sessions for AI agents with persistent memory across rentals

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

letta_ceki-0.1.0.tar.gz (13.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

letta_ceki-0.1.0-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

Details for the file letta_ceki-0.1.0.tar.gz.

File metadata

  • Download URL: letta_ceki-0.1.0.tar.gz
  • Upload date:
  • Size: 13.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for letta_ceki-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c4037a7e6e0cfcbc136b3ee7dc970b9adc6dc0e7f9287f59de09f9a721415c5e
MD5 3261a206a4df7d3082b168e519673612
BLAKE2b-256 6cdbbb33979920fdd707cafb3f78b45ad5370689763596fd339485204f0a5329

See more details on using hashes here.

File details

Details for the file letta_ceki-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: letta_ceki-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 8.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for letta_ceki-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 02412ef5ae23b5f981de3589fe01eccf2a8b9f2ce2fe3ddb8caab8dd9f6760c0
MD5 a6647d501def09c31f82a4c7658cc9cc
BLAKE2b-256 29308c79ac3f994797f7ee6de6f49eca49ec8812ccde9ae1be09446a2918b263

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page