This release is a pre-release and may not be stable for production use.
LobsterX🦞
LobsterX is an AI agent inspired by OpenClaw (formerly known as MoltBot or ClawdBot), which focuses on document-related tasks.
It runs as a Telegram bot as comes with a CLI interface to set up the necessary environment variables.
Prerequisites
- Python (if setting up the bot natively, preferably with
uv) or Docker (if deploying with Docker) - A Telegram Bot Token, in order to connect to Telegram. Follow this guide on how to create your Telegram bot with BotFather.
- A LlamaCloud API key, in order to give LobsterX document-processing capabilities. Sign up on LlamaCloud here.
- An API key for Google, OpenAI or Anthropic (you can choose one among the three or swap between different providers)
Installation
Install the bot natively:
# uv (recommended)
uv tool install lobsterx --prerelease=allow
# pip
pip install lobsterx
Pull the docker image (only works for AMD64-compatible platforms):
docker pull ghcr.io/astrabert/lobsterx:main
Setup
Through environment variables, you can customize the setup of LobsterX:
LOBSTERX_LLM_PROVIDER: LLM provider (choose betweengoogle,anthropicandopenai). Default isopenaiLOBSTERX_LLM_MODEL: LLM model (choose among available models). Default isgpt-4.1
You then need to set three required env variables:
LOBSTERX_LLM_API_KEY: API key for the LLM (you can also useOPENAI_API_KEY,GOOGLE_API_KEYorANTHROPIC_API_KEY, depending on the provider).TELEGRAM_BOT_TOKEN: token for the Telegram botLLAMA_CLOUD_API_KEY: API key for LlamaCloud
If you wish to setup LobsterX as an API server, you will need to set an API key that only you can use to interact with it, set in the environment as LOBSTERX_SERVER_KEY. The key has to be at least 32 charachters long and contain only lowercase and uppercase alphanumeric characters, - and _.
You can use the setup wizard to configure LobsterX interactively on the terminal:
lobsterx setup --interactive
Or pass options from CLI:
lobsterx setup --provider google \
--model gemini-3-flash-preview \
--api-key $GOOGLE_API_KEY \
--llama-cloud-key $LLAMA_CLOUD_API_KEY \
--telegram-token $TELEGRAM_BOT_TOKEN \
--server-key $SERVER_KEY
This will create a .env file with the necessary variables, which will be loaded by LobsterX at runtime (make sure not to share it with anyone).
If you wish to further customize the instructions that LobsterX has access to, you can use an AGENTS.md file, saved under the same directory where the agent process is running.
Run
As a Telegram Bot
Run LobsterX as a Telegram Bot:
lobsterx run
You can set the --log-level option, if you wish to have more or less logging.
Run LobsterX in a Docker container referencing a .env file:
docker run ghcr.io/astrabert/lobsterx:main --env-file=".env"
Or, setting env varaibles directly (not recommended):
docker run ghcr.io/astrabert/lobsterx:main \
--env="LOBSTERX_LLM_PROVIDER=openai" \
--env="LOBSTERX_LLM_MODEL=gpt-4.1"\
--env="LOBSTERX_LLM_API_KEY=sk-xxx" \
--env="LLAMA_CLOUD_API_KEY=llx-xxx" \
--env="TELEGRAM_BOT_TOKEN=tok-xxx"
When on Telegram, you can perform two actions:
- Sending PDF files, which will be downloaded by the bot
- Sending text messages, which will work as prompts for the bot to start a new task
With
/startcommand, you will have a welcome message explaining how to use the bot
As an API server
To run as an API server, you need to specify a series of options that are necessary for authentication, rate limiting and CORS.
- For authentication, you need to set the
LOBSTERX_SERVER_KEYwithin the environment or in a.envfile in the same working directory as the agent - For CORS, you can set a list of allowed origins
- For rate limiting, you can set the maximum limits of file uploads, task creations, task polling and task deletion per minute
In addition to these, you will also need to provide the host (0.0.0.0 e.g.), port (8000 e.g.) and protocol (http or https) on which the server will run.
You can provide all of these details directly from the CLI:
lobsterx serve \
--file-downloads-per-minute 300 \
--create-tasks-per-minute 60 \
--delete-tasks-per-minute 60 \
--poll-tasks-per-minute 300 \
--bind 0.0.0.0 \
--port 8000 \
--protocol http \
--allow https://example.com \
--allow https://anotherexample.com
All of these options have sensible defaults, but personalization is always recommended
Or create a JSON configuration (as in thie example) following this specification:
{
"allow_origins": [],
"file_downloads_per_minute": 300,
"create_tasks_per_minute": 60,
"delete_tasks_per_minute": 60,
"poll_tasks_per_minute": 300,
"host": "0.0.0.0",
"port": 8000,
"protocol": "http"
}
And provide it to the CLI:
lobsterx serve --config config.api.json
The configuration approach is recommended, as it can be re-use through different API-related commands.
Once you are serving your API through lobsterx serve, you can:
- Upload files, by sending a POST request to
/files - Create tasks, by sending a POST request to
/task - Get the status of a task, by sending a GET request to
/task/{task_id} - Cancel a task, by sending a DELETE request to
/task/{task_id}
You don't have to do this through raw API calls, the LobsterX CLI provides several commands to perform these operations on your behalf:
# upload a file
lobsterx upload-file path/to/file.pdf --config config.api.json # pass the server configuration
# start a task
lobsterx create-task "Your prompt" --config config.api.json # this will return a task ID
# check the status of a task
lobsterx get-task some-task-id --config config.api.json
# cancel a task
lobsterx cancel-task some-task-id --config config.api.json
# wait until a task is complete
lobsterx wait-task some-task-id --config config.api.json --polling-interval 2.0 --max-attempts 900 --verbose
How LobsterX Works
LobsterX is a generalist AI agent based on three main principles:
- LlamaIndex Agent Workflows: a powerful workflow engine that allows event-driven, stepwise execution of specific tasks and functions. LobsterX uses a cyclic workflow to go through thinking, tool-calling and observing repeatedly until it produces its final output.
- Structured outputs: the LLM underlying the agent is forced to produce JSON outputs that comply with certain schemas (a tool call, a thought, an observation...): outputs are produced informed by the previous chat history, and based on context about available tools and specific tasks the agent has to perform.
- Security by design: the agent does not have access to your real filesystem, but it does have access to a virtualized copy of it provided through AgentFS. PDFs sent over Telegram are also not downloaded into your real filesystem, but written within AgentFS. Files such as
.envs or other popular credential files (.npmrc,.pypirc,.netrc) are excluded from the virtual filesystem, and thus unaccessible to the agent. The agent cannot use bash commands (it has access to filesystem-based tools like read/write/edit/grep/glob for AgentFS) to avoid it being able to perform destructive or vulnerable operations.
Here is what happens when you send a prompt to LobsterX:
Along with the final response, the agent will also send you a report of everything it did during its session as a markdown file (namedd session-<random-id>-report.md).
The API server
While sharing the core desing principles outlined above, the API server has some more features related to the data flow:
- When a POST request to the
/tasksendpoint (task creation) is made, a newasyncio.Taskis spawned and stored within a in-memory task manager, using a locked dictionary to associate a task ID with an async Task. - When a GET request is sent to
/task/{task_id}, the task manager provides details on the status of the task (success,failed,cancelled,pending). If the task was succesfull, failed or was cancelled, it is removed from the dictionary. - When a DELETE request is sent to
/task/{task_id}, the async Task is cancelled and removed from the dictionary
Besides the Task Manager, the API server uses an in-memory rate limiter (fastapi-throttle) and Starlette CORS and Auth middleawares to provide authentication (through a Bearer token provided with an Authorization header) and CORS servicres.
License
This package is provided under MIT License
Contributing
For contributions, refer to the contributing guide
Metadata
Release files for lobsterx 0.2.1b0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| lobsterx-0.2.1b0.tar.gz | 16.5 kB | Without provenance | Details for lobsterx-0.2.1b0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| lobsterx-0.2.1b0-py3-none-any.whl | Python 3 | none | any | Details for lobsterx-0.2.1b0-py3-none-any.whl |
Total release size: 38.3 kB
Release files / lobsterx-0.2.1b0.tar.gz
| Download URL | lobsterx-0.2.1b0.tar.gz |
|---|---|
| Size | 16.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
47e31d0948d31a410ed2446287eef026d6d3d2413fac3a395e3111c9ef71a013
|
|
BLAKE2b-256 checksum How to use checksums |
8b0ffffb1f102f7d8fbdba1bf19d150862d0e2aeb42b6afaf2cfc67247d43379
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / lobsterx-0.2.1b0-py3-none-any.whl
| Download URL | lobsterx-0.2.1b0-py3-none-any.whl |
|---|---|
| Size | 21.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bddd897ff4f88a02f30f7d8283954b1715e706d8612133036479de8434d5b3df
|
|
BLAKE2b-256 checksum How to use checksums |
49604b263cf7285a8cbf77aa68f14207d137c854cf1087a5c61879e03223d789
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for lobsterx 0.2.1b0
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.