Romek - AI Agent session management SDK
Project description
Romek
Persistent auth for AI agents. Works on any site, today.
No website integration required. No OAuth adoption needed. Just secure session management that works.
Quick Start • LangChain • n8n • How It Works • Roadmap
The Problem
# What every agent developer does today
cookies = {"session_id": "abc123..."} # Hardcoded. Breaks constantly. Security nightmare.
Sessions expire. Cookies leak into git history. No audit trail. No access control.
The Solution
from romek import Vault
vault = Vault()
cookies = vault.get_session("linkedin.com") # Encrypted. Scoped. Audited.
pip install romek
Works on sites as they exist today. No website changes. No OAuth adoption. No waiting for the ecosystem.
See It In Action
Agent automatically authenticates using stored session—no manual login, no hardcoded cookies.
How It Works
- Log into any site in Chrome (you probably already are)
- Run
romek grab <domain>— cookies are encrypted and stored locally - Your agent retrieves them securely on-demand
No extension required. No copy-paste. One command.
Quick Start
pip install romek
romek grab linkedin.com
That's it. Your LinkedIn session is now stored in an encrypted vault.
The grab command reads cookies directly from Chrome—no extension needed, no manual export.
from romek import Vault
vault = Vault()
cookies = vault.get_session("linkedin.com")
# Use with requests, Playwright, or any HTTP library
import requests
response = requests.get("https://linkedin.com/feed", cookies=cookies)
Works with any site you're logged into:
romek grab github.com
romek grab notion.so
romek grab twitter.com
Multiple Chrome Profiles
If you use multiple Chrome profiles, specify which one to grab from:
romek grab linkedin.com --profile "Profile 1"
romek grab github.com --profile "Work"
To find your profile names:
# Mac
ls ~/Library/Application\ Support/Google/Chrome/
# Linux
ls ~/.config/google-chrome/
# Windows
dir %LOCALAPPDATA%\Google\Chrome\User Data\
Default profile is used if no --profile flag is specified.
☁️ Remote Servers (VPS / Headless / Docker)
Running n8n or scripts on a server without Chrome? Sync your local session:
On your local machine:
romek grab linkedin.com
romek export linkedin.com -o cookies.json
Copy to server:
scp cookies.json user@your-server:~/
On your server:
pip install romek
romek import cookies.json --domain linkedin.com
Your server can now access your authenticated sessions.
Project Config (Team Workflows)
Define sessions your project needs in a config file:
romek init
Creates romek.yaml:
sessions:
- linkedin.com
- github.com
- gmail.com
Then sync all sessions at once:
romek sync
Check health of all project sessions:
romek doctor
Output:
Checking session health...
linkedin.com
├── Status: ✅ Fresh
├── Cookies: 26 stored
└── Expires: in ~4 weeks
github.com
├── Status: ✅ Fresh
├── Cookies: 16 stored
└── Expires: in ~4 weeks
Health: 2/2 sessions ready
Share romek.yaml with your team. Each dev runs romek sync locally.
Why Romek?
| Without Romek | With Romek |
|---|---|
| Hardcoded cookies in code | Encrypted vault storage |
| Sessions in git history | Secrets separate from code |
| Any code can access anything | Scoped access per agent |
| No idea what accessed what | Full audit logging |
| Sessions break silently | Expiration notifications |
LangChain Integration
from langchain_openai import ChatOpenAI
from langchain.agents import initialize_agent, AgentType
from romek.langchain import get_romek_tools
tools = get_romek_tools(
agent_name="sales-bot",
vault_password="your-vault-password" # Password auto-retrieved from system keyring if not provided
)
llm = ChatOpenAI(model="gpt-4", temperature=0)
agent = initialize_agent(
tools=tools,
llm=llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)
# Agent automatically uses stored sessions
response = agent.run("Get my LinkedIn notifications")
Available tools:
authenticated_request— Make HTTP requests with stored session cookiesget_session_cookies— Retrieve cookies for custom requests
n8n Integration
Use Romek in your n8n workflows with our community node.
npm install n8n-nodes-romek
The node lets you:
- Store and retrieve session cookies in n8n workflows
- Use authenticated sessions with HTTP Request nodes
- Build automation flows that require login
📦 View on npm | GitHub
Playwright Integration
from playwright.sync_api import sync_playwright
from romek import Vault
vault = Vault()
cookies = vault.get_session("github.com")
with sync_playwright() as p:
browser = p.chromium.launch()
context = browser.new_context()
context.add_cookies(cookies)
page = context.new_page()
page.goto("https://github.com/notifications")
# Already authenticated!
CLI Reference
| Command | Description |
|---|---|
romek grab <domain> |
Grab cookies from Chrome |
romek grab <domain> --profile "Name" |
Grab from specific Chrome profile |
romek list |
List all stored sessions |
romek delete <domain> |
Delete a stored session |
romek refresh <domain> |
Re-grab cookies for a domain |
romek init |
Create romek.yaml config file |
romek sync |
Grab all sessions from romek.yaml |
romek doctor |
Check health of all project sessions |
romek status <domain> |
Check status of a specific session |
romek export <domain> -o file.json |
Export cookies to JSON file |
romek import <file> --domain <domain> |
Import cookies from JSON file |
romek version |
Show current version |
Security
- AES-256 encryption with PBKDF2 key derivation (100k iterations)
- Ed25519 keypairs for agent identity
- Scoped access — agents only access approved domains
- Audit logging — every access logged with timestamp
- SQLite storage — encrypted database at
~/.romek/vault.db
Roadmap
-
Chrome extension for cookie export(replaced bygrabcommand) - Encrypted local vault
- Direct Chrome cookie extraction (
romek grab) - Playwright integration
- LangChain integration
- n8n integration — n8n-nodes-romek
- Project config (romek.yaml)
- Session health checks (romek doctor)
- Export/Import for remote servers
- Firefox extension
- Selenium examples
- Cloud vault sync
Examples
Working demos available in the examples/ folder.
GitHub Agent Demo
Setup:
# 1. Create the agent
romek create-agent github-agent --scopes github.com
# 2. Grab cookies from Chrome
romek grab github.com
# 3. Your session is now stored and ready to use
Run:
PYTHONPATH=. python examples/github_agent.py
Contributing
PRs welcome. Check out the issues for feature requests.
License
MIT
⭐ Star us if Romek helps your agents authenticate!
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file romek-0.3.2.tar.gz.
File metadata
- Download URL: romek-0.3.2.tar.gz
- Upload date:
- Size: 27.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a0906a6b72473ea531b1e1410c9b3e91a6862e64a44dd130884046809876d920
|
|
| MD5 |
b2696533b5b116286a259d7013978c84
|
|
| BLAKE2b-256 |
85ea2dd4db370455638f8c323c67ce9d1094d0f7a43e0b14303ef78ac5a035b7
|
File details
Details for the file romek-0.3.2-py3-none-any.whl.
File metadata
- Download URL: romek-0.3.2-py3-none-any.whl
- Upload date:
- Size: 28.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9e48e7fbe794c01384c7e5f7a689fe71b31a77f36307c2a9eb286b37e73209ad
|
|
| MD5 |
f1cb7ac411165c1fe3bb592f7d7185c4
|
|
| BLAKE2b-256 |
40fb9b8b05e16eadca2cb3200c57a572214fe5e5e8aeca36d528c90c23d5f8a3
|