Plugins
Overview
PyGPT can be enhanced with plugins to add new features.
The following plugins are currently available, and model can use them instantly:
API calls- plugin lets you connect the model to the external services using custom defined API calls.Audio Input- provides speech recognition.Audio Output- provides voice synthesis.Autonomous Agent (inline)- enables autonomous conversation (AI to AI), manages loop, and connects output back to input. This is the inline Agent mode.Bitbucket- Access Bitbucket API to manage repositories, issues, and pull requests.Chat with files (LlamaIndex, inline)- plugin integrates LlamaIndex storage in any chat and provides additional knowledge into context (from indexed files).Code Interpreter- responsible for generating and executing Python code, functioning much like the Code Interpreter on ChatGPT, but locally. This means model can interface with any script, application, or code. Plugins can work in conjunction to perform sequential tasks; for example, the Files plugin can write generated Python code to a file, which the Code Interpreter can execute it and return its result to model.Context history (calendar, inline)- provides access to context history database.Crontab / Task scheduler- plugin provides cron-based job scheduling - you can schedule tasks/prompts to be sent at any time using cron-based syntax for task setup.Custom Commands- allows you to create and execute custom commands on your system.Experts (inline)- allows calling experts in any chat mode. This is the inline Experts (co-op) mode.Facebook- Manage user info, pages, posts, and photos on Facebook pages.Files I/O- grants access to the local filesystem, enabling model to read and write files, as well as list and create directories.GitHub- Access GitHub API to manage repositories, issues, and pull requests.Google- Access Gmail, Drive, Docs, Maps, Calendar, Contacts, Colab, YouTube, Keep - for managing emails, files, events, notes, video info, and contacts.Image Generation (inline)- integrates DALL-E 3 image generation with any chat and mode. Just enable and ask for image in Chat mode, using standard model like GPT-4. The plugin does not require the+ Toolsoption to be enabled.Mailer- Provides the ability to send, receive and read emails.MCP- Provides access to remote tools via the Model Context Protocol (MCP), including stdio, SSE, and Streamable HTTP transports, with per-server allow/deny filtering, Authorization header support, and a tools cache.Mouse and Keyboard- provides the ability to control the mouse and keyboard by the model.OpenStreetMap- Search, geocode, plan routes, and generate static maps using OpenStreetMap services (Nominatim, OSRM, staticmap).Real Time- automatically appends the current date and time to the system prompt, informing the model about current time.Serial port / USB- plugin provides commands for reading and sending data to USB ports.Server (SSH/FTP)- Connect to remote servers using FTP, SFTP, and SSH. Execute remote commands, upload, download, and more.Slack- Handle users, conversations, messages, and files on Slack.System (OS)- provides access to the operating system and executes system commands.System Prompt Extra- appends additional system prompts (extra data) from a list to every current system prompt. You can enhance every system prompt with extra instructions that will be automatically appended to the system prompt.Telegram- Send messages, photos, and documents; manage chats and contacts.Tuya (IoT)- Handle Tuya Smart Home devices via Tuya Cloud API.Vision (inline)- integrates vision capabilities with any chat mode, not just Vision mode. When the plugin is enabled, the model temporarily switches to vision in the background when an image attachment or vision capture is provided.Voice Control (inline)- provides voice control command execution within a conversation.Web Search- provides the ability to connect to the Web, search web pages for current data, and index external content using LlamaIndex data loaders.Wikipedia- Search Wikipedia for information.Wolfram Alpha- Compute and solve with Wolfram Alpha: short answers, full JSON pods, math (solve, derivatives, integrals), unit conversions, matrix operations, and plots.X/Twitter- Interact with tweets and users, manage bookmarks and media, perform likes, retweets, and more.
Creating Your Own Plugins
You can create your own plugin for PyGPT at any time. The plugin can be written in Python and then registered with the application just before launching it. All plugins included with the app are stored in the plugin directory - you can use them as coding examples for your own plugins.
PyGPT can be extended with:
custom plugins
custom LLMs
custom vector store providers
custom data loaders
custom audio input providers
custom audio output providers
custom web search engine providers
custom agents (LlamaIndex or OpenAI Agents)
See the section Extending PyGPT / Adding a custom plugin for more details.
API calls
PyGPT lets you connect the model to the external services using custom defined API calls.
To activate this feature, turn on the API calls plugin found in the Plugins menu.
In this plugin you can provide list of allowed API calls, their parameters and request types. The model will replace provided placeholders with required params and make API call to external service.
Your custom API callscmds
You can provide custom API calls on the list here.
Params to specify for API call:
Enabled (True / False)
Name: unique API call name (ID)
Instruction: description for model when and how to use this API call
GET params: list, separated by comma, GET params to append to endpoint URL
POST params: list, separated by comma, POST params to send in POST request
POST JSON: provide the JSON object, template to send in POST JSON request, use
%param%as POST param placeholdersHeaders: provide the JSON object with dictionary of extra request headers, like Authorization, API keys, etc.
Request type: use GET for basic GET request, POST to send encoded POST params or POST_JSON to send JSON-encoded object as body
Endpoint: API endpoint URL, use
{param}as GET param placeholders
An example API call is provided with plugin by default, it calls the Wikipedia API:
Name:
search_wikiInstructiom:
send API call to Wikipedia to search pages by queryGET params:
query, limitType:
GETAPI endpoint: https://en.wikipedia.org/w/api.php?action=opensearch&limit={limit}&format=json&search={query}
In the above example, every time you ask the model for query Wiki for provided query (e.g. Call the Wikipedia API for query: Nikola Tesla) it will replace placeholders in provided API endpoint URL with a generated query and it will call prepared API endpoint URL, like below:
https://en.wikipedia.org/w/api.php?action=opensearch&limit=5&format=json&search=Nikola%20Tesla
You can specify type of request: GET, POST and POST JSON.
In the POST request you can provide POST params, they will be encoded and send as POST data.
In the POST JSON request you must provide JSON object template to be send, using %param% placeholders in the JSON object to be replaced with the model.
You can also provide any required credentials, like Authorization headers, API keys, tokens, etc. using the headers field - you can provide a JSON object here with a dictionary key => value - provided JSON object will be converted to headers dictonary and send with the request.
Disable SSL verifydisable_ssl
Disables SSL verification when making requests. Default: False
Timeouttimeout
Connection timeout (seconds). Default: 5
User agentuser_agent
User agent to use when making requests, default: Mozilla/5.0. Default: Mozilla/5.0
Audio Input
The plugin facilitates speech recognition (by default using the Whisper model from OpenAI, Google and Bing are also available). It allows for voice commands to be relayed to the AI using your own voice. Whisper doesn’t require any extra API keys or additional configurations; it uses the main OpenAI key. In the plugin’s configuration options, you should adjust the volume level (min energy) at which the plugin will respond to your microphone. Once the plugin is activated, a new Speak option will appear at the bottom near the Send button - when this is enabled, the application will respond to the voice received from the microphone.
The plugin can be extended with other speech recognition providers.
Options
Providerprovider
Choose the provider. Default: Whisper
Available providers:
Whisper (via
OpenAI API)Whisper (local model) - not available in compiled and Snap versions, only Python/PyPi version
Google (via
SpeechRecognitionlibrary)Google Cloud (via
SpeechRecognitionlibrary)Microsoft Bing (via
SpeechRecognitionlibrary)
Whisper (API)
Modelwhisper_model
Choose the model. Default: whisper-1
Whisper (local)
Modelwhisper_local_model
Choose the local model. Default: base
Available models: https://github.com/openai/whisper
Additional keywords argumentsgoogle_args
Additional keywords arguments for r.recognize_google(audio, **kwargs)
Google Cloud
Additional keywords argumentsgoogle_args
Additional keywords arguments for r.recognize_google_cloud(audio, **kwargs)
Bing
Additional keywords argumentsbing_args
Additional keywords arguments for r.recognize_bing(audio, **kwargs)
General options
Auto sendauto_send
Automatically send recognized speech as input text after recognition. Default: True
Advanced modeadvanced
Enable only if you want to use advanced mode and the settings below. Do not enable this option if you just want to use the simplified mode (default). Default: False
Advanced mode options
Timeouttimeout
The duration in seconds that the application waits for voice input from the microphone. Default: 5
Phrase max lengthphrase_length
Maximum duration for a voice sample (in seconds). Default: 10
Min energymin_energy
Minimum threshold multiplier above the noise level to begin recording. Default: 1.3
Adjust for ambient noiseadjust_noise
Enables adjustment to ambient noise levels. Default: True
Continuous listencontinuous_listen
Experimental: continuous listening - do not stop listening after a single input. Warning: This feature may lead to unexpected results and requires fine-tuning with the rest of the options! If disabled, listening must be started manually by enabling the Speak option. Default: False
Wait for responsewait_response
Wait for a response before initiating listening for the next input. Default: True
Magic wordmagic_word
Activate listening only after the magic word is provided. Default: False
Reset Magic wordmagic_word_reset
Reset the magic word status after it is received (the magic word will need to be provided again). Default: True
Magic wordsmagic_words
List of magic words to initiate listening (Magic word mode must be enabled). Default: OK, Okay, Hey GPT, OK GPT
Magic word timeoutmagic_word_timeout
he number of seconds the application waits for magic word. Default: 1
Magic word phrase max lengthmagic_word_phrase_length
The minimum phrase duration for magic word. Default: 2
Prefix wordsprefix_words
List of words that must initiate each phrase to be processed. For example, you can define words like “OK” or “GPT”—if set, any phrases not starting with those words will be ignored. Insert multiple words or phrases separated by commas. Leave empty to deactivate. Default: empty
Stop wordsstop_words
List of words that will stop the listening process. Default: stop, exit, quit, end, finish, close, terminate, kill, halt, abort
Options related to Speech Recognition internals:
energy_thresholdrecognition_energy_threshold
Represents the energy level threshold for sounds. Default: 300
dynamic_energy_thresholdrecognition_dynamic_energy_threshold
Represents whether the energy level threshold (see recognizer_instance.energy_threshold) for sounds should be automatically adjusted based on the currently ambient noise level while listening. Default: True
dynamic_energy_adjustment_dampingrecognition_dynamic_energy_adjustment_damping
Represents approximately the fraction of the current energy threshold that is retained after one second of dynamic threshold adjustment. Default: 0.15
pause_thresholdrecognition_pause_threshold
Represents the minimum length of silence (in seconds) that will register as the end of a phrase. Default: 0.8
adjust_for_ambient_noise: durationrecognition_adjust_for_ambient_noise_duration
The duration parameter is the maximum number of seconds that it will dynamically adjust the threshold for before returning. Default: 1
Options reference: https://pypi.org/project/SpeechRecognition/1.3.1/
Audio Output
The plugin lets you turn text into speech using the TTS model from OpenAI or other services like Microsoft Azure, Google, and Eleven Labs. You can add more text-to-speech providers to it too. OpenAI TTS does not require any additional API keys or extra configuration; it utilizes the main OpenAI key.
Microsoft Azure requires to have an Azure API Key. Before using speech synthesis via Microsoft Azure, Google or Eleven Labs, you must configure the audio plugin with your API keys, regions and voices if required.
Through the available options, you can select the voice that you want the model to use. More voice synthesis providers coming soon.
To enable voice synthesis, activate the Audio Output plugin in the Plugins menu or turn on the Audio Output option in the Audio / Voice menu (both options in the menu achieve the same outcome).
Options
Providerprovider
Choose the provider. Default: OpenAI TTS
Available providers:
OpenAI TTS
Microsoft Azure TTS
Google TTS
Eleven Labs TTS
OpenAI Text-To-Speech
Modelopenai_model
Choose the model. Available options:
tts-1
tts-1-hd
Default: tts-1
Voice openai_voice
Choose the voice. Available voices to choose from:
alloy
echo
fable
onyx
nova
shimmer
Default: alloy
Microsoft Azure Text-To-Speech
Azure API Keyazure_api_key
Here, you should enter the API key, which can be obtained by registering for free on the following website: https://azure.microsoft.com/en-us/services/cognitive-services/text-to-speech
Azure Regionazure_region
You must also provide the appropriate region for Azure here. Default: eastus
Voice (EN)azure_voice_en
Here you can specify the name of the voice used for speech synthesis for English. Default: en-US-AriaNeural
Voice (non-English)azure_voice_pl
Here you can specify the name of the voice used for speech synthesis for other non-english languages. Default: pl-PL-AgnieszkaNeural
Google Text-To-Speech
Google Cloud Text-to-speech API Keygoogle_api_key
You can obtain your own API key at: https://console.cloud.google.com/apis/library/texttospeech.googleapis.com
Voicegoogle_voice
Specify voice. Voices: https://cloud.google.com/text-to-speech/docs/voices
Language codegoogle_api_key
Language code. Language codes: https://cloud.google.com/speech-to-text/docs/speech-to-text-supported-languages
Eleven Labs Text-To-Speech
Eleven Labs API Keyeleven_labs_api_key
You can obtain your own API key at: https://elevenlabs.io/speech-synthesis
Voice IDeleven_labs_voice
Voice ID. Voices: https://elevenlabs.io/voice-library
Modeleleven_labs_model
Specify model. Models: https://elevenlabs.io/docs/speech-synthesis/models
If speech synthesis is enabled, a voice will be additionally generated in the background while generating a response via model.
Both OpenAI TTS and OpenAI Whisper use the same single API key provided for the OpenAI API, with no additional keys required.
Autonomous Agent (inline)
Warning
Please use autonomous mode with caution! - this mode, when connected with other plugins, may produce unexpected results!
The plugin activates autonomous mode in standard chat modes, where AI begins a conversation with itself. You can set this loop to run for any number of iterations. Throughout this sequence, the model will engage in self-dialogue, answering his own questions and comments, in order to find the best possible solution, subjecting previously generated steps to criticism.
This mode is similar to Auto-GPT - it can be used to create more advanced inferences and to solve problems by breaking them down into subtasks that the model will autonomously perform one after another until the goal is achieved. The plugin is capable of working in cooperation with other plugins, thus it can utilize tools such as web search, access to the file system, or image generation using DALL-E.
Options
You can adjust the number of iterations for the self-conversation in the Plugins / Settings... menu under the following option:
Iterationsiterations
Default: 3
Warning
Setting this option to 0 activates an infinity loop which can generate a large number of requests and cause very high token consumption, so use this option with caution!
Promptsprompts
Editable list of prompts used to instruct how to handle autonomous mode, you can create as many prompts as you want. First active prompt on list will be used to handle autonomous mode.
Auto-stop after goal is reachedauto_stop
If enabled, plugin will stop after goal is reached. Default: True
Reverse roles between iterationsreverse_roles
Only for Completion mode. If enabled, this option reverses the roles (AI <> user) with each iteration. For example, if in the previous iteration the response was generated for “Batman,” the next iteration will use that response to generate an input for “Joker.” Default: True
Bitbucket
The Bitbucket plugin allows for seamless integration with the Bitbucket Cloud API, offering functionalities to manage repositories, issues, and pull requests. This plugin provides highly configurable options for authentication, cached convenience, and manages HTTP requests efficiently.
Retrieve details about the authenticated user.
Get information about a specific user.
List available workspaces.
List repositories in a workspace.
Get details about a specific repository.
Create a new repository.
Delete an existing repository.
Retrieve contents of a file in a repository.
Upload a file to a repository.
Delete a file from a repository.
List issues in a repository.
Create a new issue.
Comment on an existing issue.
Update details of an issue.
List pull requests in a repository.
Create a new pull request.
Merge an existing pull request.
Search for repositories.
Options
API baseapi_baseDefine the base URL for the Bitbucket Cloud API. Default: https://api.bitbucket.org/2.0
HTTP timeout (s)http_timeoutSet the timeout for HTTP requests in seconds. Default: 30
Auth options
Auth modeauth_modeSelect the authentication mode. Default: auto
Available modes: * auto * basic * bearer
Usernamebb_usernameProvide your Bitbucket username (handle, not email).
App Passwordbb_app_passwordSpecify your Bitbucket App Password (Basic). This option is secret.
Bearer tokenbb_access_tokenEnter the OAuth access token (Bearer). This option is secret.
Cached convenience
(auto) User UUIDuser_uuidCached after using the bb_me command.
(auto) UsernameusernameCached after using the bb_me command.
Commands
Auth Options
bb_auth_set_modeSet the authentication mode: auto|basic|bearer.
bb_set_app_passwordSet App Password credentials including username and app password.
bb_set_bearerSet the Bearer authentication token.
bb_auth_checkRun diagnostics to show authentication results for /user.
User Management
bb_meRetrieve details for the authenticated user.
bb_user_getFetch user information by username.
bb_workspaces_listList all accessible workspaces.
Repositories Management
bb_repos_listDisplay a list of repositories.
bb_repo_getFetch details of a specific repository.
bb_repo_createCreate a new repository in a specified workspace.
bb_repo_deleteDelete a repository (requires confirmation).
Contents Management
bb_contents_getRetrieve file or directory contents from a repository.
bb_file_putCreate or update a file in a repository.
bb_file_deleteDelete specified files within a repository.
Issues Management
bb_issues_listList issues in a repository.
bb_issue_createCreate a new issue within a repository.
bb_issue_commentAdd a comment to an existing issue.
bb_issue_updateUpdate details of an existing issue.
Pull Requests Management
bb_prs_listDisplay a list of pull requests.
bb_pr_createCreate a new pull request.
bb_pr_mergeMerge an existing pull request.
Search Functionality
bb_search_reposSearch repositories using Bitbucket Query Language (BBQL).
Chat with files (LlamaIndex, inline)
Plugin integrates LlamaIndex storage in any chat and provides additional knowledge into context.
Options
Ask LlamaIndex firstask_llama_first
When enabled, then LlamaIndex will be asked first, and response will be used as additional knowledge in prompt. When disabled, then LlamaIndex will be asked only when needed. INFO: Disabled in autonomous mode (via plugin)! Default: False
Auto-prepare question before asking LlamaIndex firstprepare_question
When enabled, then question will be prepared before asking LlamaIndex first to create best query.
Model for question preparationmodel_prepare_question
Model used to prepare question before asking LlamaIndex. Default: gpt-3.5-turbo
Max output tokens for question preparationprepare_question_max_tokens
Max tokens in output when preparing question before asking LlamaIndex. Default: 500
Prompt for question preparationsyntax_prepare_question
System prompt for question preparation.
Max characters in questionmax_question_chars
Max characters in question when querying LlamaIndex, 0 = no limit, default: 1000
Append metadata to contextappend_meta
If enabled, then metadata from LlamaIndex will be appended to additional context. Default: False
Modelmodel_query
Model used for querying LlamaIndex. Default: gpt-3.5-turbo
Index nameidx
Indexes to use. If you want to use multiple indexes at once then separate them by comma. Default: base
Code Interpreter
Executing Code
From version 2.4.13 with built-in IPython.
The plugin operates similarly to the Code Interpreter in ChatGPT, with the key difference that it works locally on the user’s system. It allows for the execution of any Python code on the computer that the model may generate. When combined with the Files I/O plugin, it facilitates running code from files saved in the data directory. You can also prepare your own code files and enable the model to use them or add your own plugin for this purpose. You can execute commands and code on the host machine or in Docker container.
IPython: Starting from version 2.4.13, it is highly recommended to adopt the new option: IPython, which offers significant improvements over previous workflows. IPython provides a robust environment for executing code within a kernel, allowing you to maintain the state of your session by preserving the results of previous commands. This feature is particularly useful for iterative development and data analysis, as it enables you to build upon prior computations without starting from scratch. Moreover, IPython supports the use of magic commands, such as !pip install <package_name>, which facilitate the installation of new packages directly within the session. This capability streamlines the process of managing dependencies and enhances the flexibility of your development environment. Overall, IPython offers a more efficient and user-friendly experience for executing and managing code.
To use IPython in sandbox mode, Docker must be installed on your system.
You can find the installation instructions here: https://docs.docker.com/engine/install/
Connecting IPython in Docker in Snap version:
To use IPython in the Snap version, you must connect PyGPT to the Docker daemon:
$ sudo snap connect pygpt:docker-executables docker:docker-executables
$ sudo snap connect pygpt:docker docker:docker-daemon
Code interpreter: a real-time Python code interpreter is built-in. Click the <> icon to open the interpreter window. Both the input and output of the interpreter are connected to the plugin. Any output generated by the executed code will be displayed in the interpreter. Additionally, you can request the model to retrieve contents from the interpreter window output.
Important
Executing Python code using IPython in compiled versions requires an enabled sandbox (Docker container). You can connect the Docker container via Plugins -> Settings.
Tip
always remember to enable the + Tools option to allow execute commands from the plugins.
Options:
General
Connect to the Python code interpreter windowattach_output
Automatically attach code input/output to the Python code interpreter window. Default: True
Tool: get_python_outputcmd.get_python_output
Allows get_python_output command execution. If enabled, it allows retrieval of the output from the Python code interpreter window. Default: True
Tool: get_python_inputcmd.get_python_input
Allows get_python_input command execution. If enabled, it allows retrieval all input code (from edit section) from the Python code interpreter window. Default: True
Tool: clear_python_outputcmd.clear_python_output
Allows clear_python_output command execution. If enabled, it allows clear the output of the Python code interpreter window. Default: True
IPython
Sandbox (docker container)sandbox_ipython
Executes IPython in sandbox (docker container). Docker must be installed and running.
Dockerfileipython_dockerfile
You can customize the Dockerfile for the image used by IPython by editing the configuration above and rebuilding the image via Tools -> Rebuild IPython Docker Image.
Session Keyipython_session_key
It must match the key provided in the Dockerfile.
Docker image nameipython_image_name
Custom Docker image name
Docker container nameipython_container_name
Custom Docker container name
Connection addressipython_conn_addr
Default: 127.0.0.1
Port: shellipython_port_shell
Default: 5555
Port: iopubipython_port_iopub
Default: 5556
Port: stdinipython_port_stdin
Default: 5557
Port: controlipython_port_control
Default: 5558
Port: hbipython_port_hb
Default: 5559
Tool: ipython_executecmd.ipython_execute
Allows Python code execution in IPython interpreter (in current kernel). Default: True
Tool: python_kernel_restartcmd.ipython_kernel_restart
Allows to restart IPython kernel. Default: True
Python (legacy)
Sandbox (docker container)sandbox_docker
Executes commands in sandbox (docker container). Docker must be installed and running.
Python command templatepython_cmd_tpl
Python command template (use {filename} as path to file placeholder). Default: python3 {filename}
Dockerfiledockerfile
You can customize the Dockerfile for the image used by legacy Python by editing the configuration above and rebuilding the image via Tools -> Rebuild Python (Legacy) Docker Image.
Docker image nameimage_name
Custom Docker image name
Docker container namecontainer_name
Custom Docker container name
Tool: code_executecmd.code_execute
Allows code_execute command execution. If enabled, provides Python code execution (generate and execute from file). Default: True
Tool: code_execute_allcmd.code_execute_all
Allows code_execute_all command execution. If enabled, provides execution of all the Python code in interpreter window. Default: True
Tool: code_execute_filecmd.code_execute_file
Allows code_execute_file command execution. If enabled, provides Python code execution from existing .py file. Default: True
HTML Canvas
Tool: render_html_outputcmd.render_html_output
Allows render_html_output command execution. If enabled, it allows to render HTML/JS code in built-it HTML/JS browser (HTML Canvas). Default: True
Tool: get_html_outputcmd.get_html_output
Allows get_html_output command execution. If enabled, it allows retrieval current output from HTML Canvas. Default: True
Sandbox (docker container)sandbox_docker
Execute commands in sandbox (docker container). Docker must be installed and running. Default: False
Docker imagesandbox_docker_image
Docker image to use for sandbox Default: python:3.8-alpine
Context history (calendar, inline)
Provides access to context history database. Plugin also provides access to reading and creating day notes.
Examples of use, you can ask e.g. for the following:
Give me today day note
Save a new note for today
Update my today note with…
Get the list of yesterday conversations
Get contents of conversation ID 123
etc.
You can also use @ ID tags to automatically use summary of previous contexts in current discussion.
To use context from previous discussion with specified ID use following syntax in your query:
@123
Where 123 is the ID of previous context (conversation) in database, example of use:
Let's talk about discussion @123
Options
Enable: using context @ ID tagsuse_tags
When enabled, it allows to automatically retrieve context history using @ tags, e.g. use @123 in question to use summary of context with ID 123 as additional context. Default: False
Tool: get date range context listcmd.get_ctx_list_in_date_range
Allows get_ctx_list_in_date_range command execution. If enabled, it allows getting the list of context history (previous conversations). Default: True
Tool: get context content by IDcmd.get_ctx_content_by_id
Allows get_ctx_content_by_id command execution. If enabled, it allows getting summarized content of context with defined ID. Default: True
Tool: count contexts in date rangecmd.count_ctx_in_date
Allows count_ctx_in_date command execution. If enabled, it allows counting contexts in date range. Default: True
Tool: get day notecmd.get_day_note
Allows get_day_note command execution. If enabled, it allows retrieving day note for specific date. Default: True
Tool: add day notecmd.add_day_note
Allows add_day_note command execution. If enabled, it allows adding day note for specific date. Default: True
Tool: update day notecmd.update_day_note
Allows update_day_note command execution. If enabled, it allows updating day note for specific date. Default: True
Tool: remove day notecmd.remove_day_note
Allows remove_day_note command execution. If enabled, it allows removing day note for specific date. Default: True
Modelmodel_summarize
Model used for summarize. Default: gpt-3.5-turbo
Max summary tokenssummary_max_tokens
Max tokens in output when generating summary. Default: 1500
Max contexts to retrievectx_items_limit
Max items in context history list to retrieve in one query. 0 = no limit. Default: 30
Per-context items content chunk sizechunk_size
Per-context content chunk size (max characters per chunk). Default: 100000 chars
Options (advanced)
Prompt: @ tags (system)prompt_tag_system
Prompt for use @ tag (system).
Prompt: @ tags (summary)prompt_tag_summary
Prompt for use @ tag (summary).
Crontab / Task scheduler
Plugin provides cron-based job scheduling - you can schedule tasks/prompts to be sent at any time using cron-based syntax for task setup.
Options
Your taskscrontab
Add your cron-style tasks here. They will be executed automatically at the times you specify in the cron-based job format. If you are unfamiliar with Cron, consider visiting the Cron Guru page for assistance: https://crontab.guru
Number of active tasks is always displayed in a tray dropdown menu:
Create a new context on job runnew_ctx
If enabled, then a new context will be created on every run of the job.” Default: True
Show notification on job runshow_notify
If enabled, then a tray notification will be shown on every run of the job. Default: True
Custom Commands
With the Custom Commands plugin, you can integrate PyGPT with your operating system and scripts or applications. You can define an unlimited number of custom commands and instruct model on when and how to execute them. Configuration is straightforward, and PyGPT includes a simple tutorial command for testing and learning how it works:
To add a new custom command, click the ADD button and then:
Provide a name for your command: this is a unique identifier for model.
Provide an
instructionexplaining what this command does; model will know when to use the command based on this instruction.Define
params, separated by commas - model will send data to your commands using these params. These params will be placed into placeholders you have defined in thecmdfield. For example:
If you want instruct model to execute your Python script named smart_home_lights.py with an argument, such as 1 to turn the light ON, and 0 to turn it OFF, define it as follows:
name: lights_cmd
instruction: turn lights on/off; use 1 as ‘arg’ to turn ON, or 0 as ‘arg’ to turn OFF
params: arg
cmd:
python /path/to/smart_home_lights.py {arg}
The setup defined above will work as follows:
When you ask model to turn your lights ON, model will locate this command and prepare the command python /path/to/smart_home_lights.py {arg} with {arg} replaced with 1. On your system, it will execute the command:
python /path/to/smart_home_lights.py 1
And that’s all. Model will take care of the rest when you ask to turn ON the lights.
You can define as many placeholders and parameters as you desire.
Here are some predefined system placeholders for use:
{_time}- current time inH:M:Sformat{_date}- current date inY-m-dformat{_datetime}- current date and time inY-m-d H:M:Sformat{_file}- path to the file from which the command is invoked{_home}- path to PyGPT’s home/working directory
You can connect predefined placeholders with your own params.
Example:
name: song_cmd
instruction: store the generated song on hard disk
params: song_text, title
cmd:
echo "{song_text}" > {_home}/{title}.txt
With the setup above, every time you ask model to generate a song for you and save it to the disk, it will:
Generate a song.
Locate your command.
Execute the command by sending the song’s title and text.
The command will save the song text into a file named with the song’s title in the PyGPT working directory.
Example tutorial command
PyGPT provides simple tutorial command to show how it work, to run it just ask model for execute tutorial test command and it will show you how it works:
> please execute tutorial test command
Experts (inline)
The plugin allows calling experts in any chat mode. This is the inline Experts (co-op) mode.
See the Work modes -> Experts section for more details.
Facebook
The plugin integrates with Facebook’s Graph API to enable various actions such as managing pages, posts, and media uploads. It uses OAuth2 for authentication and supports automatic token exchange processes.
Retrieving basic information about the authenticated user.
Listing all Facebook pages the user has access to.
Setting a specified Facebook page as the default.
Retrieving a list of posts from a Facebook page.
Creating a new post on a Facebook page.
Deleting a post from a Facebook page.
Uploading a photo to a Facebook page.
Options
Graph API Versiongraph_version
Specify the API version. Default: v21.0
API Baseapi_base
Base address for the Graph API. The version will be appended automatically.
Authorize Baseauthorize_base
Base address for OAuth authorization. The version will be appended automatically.
HTTP Timeout (s)http_timeout
Set the timeout for HTTP requests in seconds. Default: 30
OAuth2 (PKCE) Settings
App ID (client_id)oauth2_client_id
Provide your Facebook App ID.
App Secret (optional)oauth2_client_secret
Required for long-lived token exchange unless using PKCE. Secret
Confidential Clientoauth2_confidential
Use client_secret on exchange instead of code_verifier.
Redirect URIoauth2_redirect_uri
Matches one of the valid OAuth Redirect URIs in your Meta App.
Scopesoauth2_scopes
Space-separated authorized permissions.
User Access Tokenoauth2_access_token
Stores user access token. Secret
Cache
User IDuser_id
Cached after calling fb_me or OAuth exchange.
User Nameuser_name
Cached after calling fb_me or OAuth exchange.
Default Page IDfb_page_id
Selected via fb_page_set_default.
Default Page Namefb_page_name
Selected via fb_page_set_default.
Default Page Access Tokenfb_page_access_token
Cached with fb_page_set_default or on demand. Secret
OAuth UX Options
Auto-start OAuthoauth_auto_begin
Automatically begin PKCE flow when commands need a user token.
Open Browser Automaticallyoauth_open_browser
Open authorization URL in the default web browser.
Use Local Server for OAuthoauth_local_server
Start a local HTTP server to capture redirect.
OAuth Local Timeout (s)oauth_local_timeout
Duration to wait for a redirect with code. Default: 180
Success HTMLoauth_success_html
HTML displayed on successful local callback.
Fail HTMLoauth_fail_html
HTML displayed on callback error.
OAuth Local Portoauth_local_port
Set the local HTTP port; should be above 1024 and allowed in the app. Default: 8732
Allow Fallback Portoauth_allow_port_fallback
Choose a free local port if the preferred port is busy or forbidden.
Commands
Auth: Begin OAuth2fb_oauth_begin
Starts OAuth2 (PKCE) flow and returns the authorization URL.
Auth: Exchange Codefb_oauth_exchange
Trades authorization code for a user access token.
Auth: Extend User Tokenfb_token_extend
Exchanges a short-lived token for a long-lived token; requires app secret.
Users: Mefb_me
Retrieves the authorized user’s profile.
Pages: Listfb_pages_list
Lists pages the user manages with details like ID, name, and access token.
Pages: Set Defaultfb_page_set_default
Caches name and access token for a default page.
Posts: Listfb_page_posts
Retrieves the page’s feed (posts).
Posts: Createfb_page_post_create
Publishes a post with optional text, links, and photos.
Posts: Deletefb_page_post_delete
Removes a specified page post.
Media: Upload Photofb_page_photo_upload
Uploads a photo to a page from a local path or URL.
Files I/O
The plugin allows for file management within the local filesystem. It enables the model to create, read, write and query files located in the data directory, which can be found in the user’s work directory. With this plugin, the AI can also generate Python code files and thereafter execute that code within the user’s system.
Plugin capabilities include:
Sending files as attachments
Reading files
Appending to files
Writing files
Deleting files and directories
Listing files and directories
Creating directories
Downloading files
Copying files and directories
Moving (renaming) files and directories
Reading file info
Indexing files and directories using LlamaIndex
Querying files using LlamaIndex
Searching for files and directories
If a file being created (with the same name) already exists, a prefix including the date and time is added to the file name.
Options:
General
Tool: send (upload) file as attachmentcmd.send_file
Allows send_file command execution. Default: True
Tool: read filecmd.read_file
Allows read_file command execution. Default: True
Tool: append to filecmd.append_file
Allows append_file command execution. Text-based files only (plain text, JSON, CSV, etc.) Default: True
Tool: save filecmd.save_file
Allows save_file command execution. Text-based files only (plain text, JSON, CSV, etc.) Default: True
Tool: delete filecmd.delete_file
Allows delete_file command execution. Default: True
Tool: list files (ls)cmd.list_files
Allows list_dir command execution. Default: True
Tool: list files in dirs in directory (ls)cmd.list_dir
Allows mkdir command execution. Default: True
Tool: downloading filescmd.download_file
Allows download_file command execution. Default: True
Tool: removing directoriescmd.rmdir
Allows rmdir command execution. Default: True
Tool: copying filescmd.copy_file
Allows copy_file command execution. Default: True
Tool: copying directories (recursive)cmd.copy_dir
Allows copy_dir command execution. Default: True
Tool: move files and directories (rename)cmd.move
Allows move command execution. Default: True
Tool: check if path is directorycmd.is_dir
Allows is_dir command execution. Default: True
Tool: check if path is filecmd.is_file
Allows is_file command execution. Default: True
Tool: check if file or directory existscmd.file_exists
Allows file_exists command execution. Default: True
Tool: get file sizecmd.file_size
Allows file_size command execution. Default: True
Tool: get file infocmd.file_info
Allows file_info command execution. Default: True
Tool: find file or directorycmd.find
Allows find command execution. Default: True
Tool: get current working directorycmd.cwd
Allows cwd command execution. Default: True
Use data loadersuse_loaders
Use data loaders from LlamaIndex for file reading (read_file command). Default: True
Indexing
Tool: quick query the file with LlamaIndexcmd.query_file
Allows query_file command execution (in-memory index). If enabled, model will be able to quick index file into memory and query it for data (in-memory index) Default: True
Model for query in-memory indexmodel_tmp_query
Model used for query temporary index for query_file command (in-memory index). Default: gpt-3.5-turbo
Tool: indexing files to persistent indexcmd.file_index
Allows file_index command execution. If enabled, model will be able to index file or directory using LlamaIndex (persistent index). Default: True
Index to use when indexing filesidx
ID of index to use for indexing files (persistent index). Default: base
Auto index reading filesauto_index
If enabled, every time file is read, it will be automatically indexed (persistent index). Default: False
Only index reading filesonly_index
If enabled, file will be indexed without return its content on file read (persistent index). Default: False
GitHub
The plugin provides seamless integration with GitHub, allowing various operations such as repository management, issue tracking, pull requests, and more through GitHub’s API. This plugin requires authentication, which can be configured using a Personal Access Token (PAT) or OAuth Device Flow.
Retrieve details about your GitHub profile.
Get information about a specific GitHub user.
List repositories for a user or organization.
Retrieve details about a specific repository.
Create a new repository.
Delete an existing repository.
Retrieve the contents of a file in a repository.
Upload or update a file in a repository.
Delete a file from a repository.
List issues in a repository.
Create a new issue in a repository.
Add a comment to an existing issue.
Close an existing issue.
List pull requests in a repository.
Create a new pull request.
Merge an existing pull request.
Search for repositories based on a query.
Search for issues based on a query.
Search for code based on a query.
Options
API baseapi_baseConfigure the base URL for GitHub’s API. Default: https://api.github.com
Web baseweb_baseSet the GitHub website base URL. Default: https://github.com
API version headerapi_versionSpecify the API version for requests. Default: 2022-11-28
HTTP timeout (s)http_timeoutDefine timeout for API requests in seconds. Default: 30
OAuth Device Flow
OAuth Client IDoauth_client_idSet the Client ID from your GitHub OAuth App. Supports Device Flow. Secret
Scopesoauth_scopesList the space-separated OAuth scopes. Default: repo read:org read:user user:email
Open browser automaticallyoauth_open_browserAutomatically open the verification URL in the default browser. Default: True
Auto-start auth when requiredoauth_auto_beginStart Device Flow automatically when a command requires a token. Default: True
Tokens
(auto) OAuth access tokengh_access_tokenStore OAuth access token for Device/Web. Secret
PAT token (optional)pat_tokenProvide a Personal Access Token (classic or fine-grained) for authentication. Secret
Auth schemeauth_schemeChoose the authentication scheme: Bearer or Token (use Token for PAT).
Cache
(auto) User IDuser_idCache User ID after gh_me or authentication.
(auto) UsernameusernameCache username after gh_me or authentication.
Commands
Auth
gh_device_begin- Begin OAuth Device Flow.gh_device_poll- Poll for access token using device code.gh_set_pat- Set Personal Access Token.
Users
gh_me- Get authenticated user details.gh_user_get- Retrieve user information by username.
Repositories
gh_repos_list- List all repositories.gh_repo_get- Get details for a specific repository.gh_repo_create- Create a new repository.gh_repo_delete- Delete an existing repository. (Disabled by default)
Contents
gh_contents_get- Get file or directory contents.gh_file_put- Create or update a file via Contents API.gh_file_delete- Delete a file via Contents API.
Issues
gh_issues_list- List issues in a repository.gh_issue_create- Create a new issue.gh_issue_comment- Comment on an issue.gh_issue_close- Close an existing issue.
Pull Requests
gh_pulls_list- List all pull requests.gh_pull_create- Create a new pull request.gh_pull_merge- Merge an existing pull request.
Search
gh_search_repos- Search for repositories.gh_search_issues- Search for issues and pull requests.gh_search_code- Search for code across repositories.
Google (Gmail, Drive, Calendar, Contacts, YT, Keep, Docs, Maps, Colab)
The plugin integrates with various Google services, enabling features such as email management, calendar events, contact handling, and document manipulation through Google APIs.
Gmail
Listing recent emails from Gmail.
Listing all emails from Gmail.
Searching emails in Gmail.
Retrieving email details by ID in Gmail.
Sending an email via Gmail.
Google Calendar
Listing recent calendar events.
Listing today’s calendar events.
Listing tomorrow’s calendar events.
Listing all calendar events.
Retrieving calendar events by a specific date.
Adding a new event to the calendar.
Deleting an event from the calendar.
Google Keep
Listing notes from Google Keep.
Adding a new note to Google Keep.
Google Drive
Listing files from Google Drive.
Finding a file in Google Drive by its path.
Downloading a file from Google Drive.
Uploading a file to Google Drive.
YouTube
Retrieving information about a YouTube video.
Retrieving the transcript of a YouTube video.
Google Contacts
Listing contacts from Google Contacts.
Adding a new contact to Google Contacts.
Google Docs
Creating a new document.
Retrieving a document.
Listing documents.
Appending text to a document.
Replacing text in a document.
Inserting a heading in a document.
Exporting a document.
Copying from a template.
Google Maps
Geocoding an address.
Reverse geocoding coordinates.
Getting directions between locations.
Using the distance matrix.
Text search for places.
Finding nearby places.
Generating static map images.
Google Colab
Listing notebooks.
Creating a new notebook.
Adding a code cell.
Adding a markdown cell.
Getting a link to a notebook.
Renaming a notebook.
Duplicating a notebook.
Options
Google credentials.json (content)credentialsPaste the JSON content of your OAuth client or Service Account. This is mandatory for the plugin to access your Google services. Secret: Yes
OAuth token store (auto)oauth_tokenAutomatically stores and updates the refresh token necessary for Google service access. Secret: Yes
Use local server for OAuthoauth_local_serverRun a local server for the installed app OAuth flow to simplify the authentication process. Default: True
OAuth local port (0=random)oauth_local_portSpecify the port for InstalledAppFlow.run_local_server. A value of 0 lets the system choose a random available port. Default: 0
Scopesoauth_scopesDefine space-separated OAuth scopes for services like Gmail, Calendar, Drive, Contacts, YouTube, Docs, and Keep. Extend scopes to include Keep services if needed.
Impersonate user (Workspace DWD)impersonate_userOptionally provide a subject for service account domain-wide delegation.
YouTube API Key (optional)youtube_api_keyIf provided, allows fetching public video information without needing OAuth tokens. Secret: Yes
Allow unofficial YouTube transcriptallow_unofficial_youtube_transcriptEnables the use of youtube-transcript-api for transcripts when official captions are unavailable. Default: False
Keep modekeep_modeDetermines the mode for accessing Keep: official, unofficial, or auto. Default: auto
Allow unofficial Keepallow_unofficial_keepUse gkeepapi as a fallback for Keep services, requiring keep_username and keep_master_token. Default: True
Keep username (unofficial)keep_usernameSet the email used for gkeepapi.
Keep master token (unofficial)keep_master_tokenProvide the master token for gkeepapi usage, ensuring secure handling. Secret: Yes
Google Maps API Keygoogle_maps_api_keyNecessary for accessing Google Maps features like Geocoding, Directions, and Distance Matrix. Secret: Yes
Maps API Key (alias)maps_api_keyAlias for google_maps_api_key for backward compatibility. Secret: Yes
Commands
Gmail
gmail_list_recent- List n newest Gmail messages.gmail_list_all- List all Gmail messages (paginated).gmail_search- Search Gmail.gmail_get_by_id- Get Gmail message by ID.gmail_send- Send Gmail message.
Calendar
calendar_events_recent- Upcoming events (from now).calendar_events_today- Events for today (UTC day bounds).calendar_events_tomorrow- Events for tomorrow (UTC day bounds).calendar_events_all- All events in range.calendar_events_by_date- Events for date or date range.calendar_add_event- Add calendar event.calendar_delete_event- Delete event by ID.
Keep
keep_list_notes- List notes (Keep).keep_add_note- Add note (Keep).
Drive
drive_list_files- List Drive files.drive_find_by_path- Find Drive file by path.drive_download_file- Download Drive file.drive_upload_file- Upload local file to Drive.
YouTube
youtube_video_info- Get YouTube video info.youtube_transcript- Get YouTube transcript.
Contacts
contacts_list- List contacts.contacts_add- Add new contact.
Google Docs
docs_create- Create Google Doc.docs_get- Get Google Doc (structure + plain text).docs_list- List Google Docs.docs_append_text- Append text to Google Doc.docs_replace_text- Replace all text occurrences in Google Doc.docs_insert_heading- Insert heading at end of Google Doc.docs_export- Export Google Doc to file.docs_copy_from_template- Make a copy of template Google Doc.
Google Maps
maps_geocode- Geocode an address.maps_reverse_geocode- Reverse geocode coordinates.maps_directions- Get directions between origin and destination.maps_distance_matrix- Distance Matrix for origins and destinations.maps_places_textsearch- Places Text Search.maps_places_nearby- Nearby Places.maps_static_map- Generate Static Map image.
Google Colab
colab_list_notebooks- List Colab notebooks on Drive.colab_create_notebook- Create new Colab notebook.colab_add_code_cell- Add code cell to notebook.colab_add_markdown_cell- Add markdown cell to notebook.colab_get_link- Get Colab edit link.colab_rename- Rename notebook.colab_duplicate- Duplicate notebook.
Image Generation (inline)
The plugin integrates DALL-E 3 image generation with any chat mode. Simply enable it and request an image in Chat mode, using a standard model such as GPT-4. The plugin does not require the + Tools option to be enabled.
Options
Promptprompt
The prompt is used to generate a query for the DALL-E image generation model, which runs in the background.
Mailer
Enables the sending, receiving, and reading of emails from the inbox. Currently, only SMTP is supported. More options coming soon.
Options
From (email)from_email
From (email), e.g. me@domain.com
Tool: send_mailcmd.send_mail
Allows send_mail command execution. If enabled, model will be able to sending emails.
Tool: receive_emailscmd.receive_emails
Allows receive_emails command execution. If enabled, model will be able to receive emails from the server.
Tool: get_email_bodycmd.get_email_body
Allows get_email_body command execution. If enabled, model will be able to receive message body from the server.
SMTP Hostsmtp_host
SMTP Host, e.g. smtp.domain.com
SMTP Port (Inbox)smtp_port_inbox
SMTP Port, default: 995
SMTP Port (Outbox)smtp_port_outbox
SMTP Port, default: 465
SMTP Usersmtp_user
SMTP User, e.g. user@domain.com
SMTP Passwordsmtp_password
SMTP Password.
MCP
With the MCP plugin, you can connect PyGPT to remote tools exposed by Model Context Protocol servers (stdio, Streamable HTTP, or SSE). The plugin discovers available tools on your configured servers and publishes them to the model as callable commands with proper parameter schemas. You can whitelist/blacklist tools per server and optionally cache discovery results for speed.
How it works
You define one or more MCP servers in the plugin settings.
For every active server, the plugin discovers its tools and exposes them to the model as commands.
Each exposed command name is derived from the server label and tool name in the form
label__tool. - Names are sanitized to allowed characters[a-zA-Z0-9_-]and kept under 64 characters. The plugin truncates and adds a short hash if needed to ensure uniqueness.If
allowed_commandsis set, only those tools are exposed (whitelist).If
disabled_commandsis set, those tools are hidden (blacklist).Discovery results can be cached (TTL) so you don’t re-fetch the list on every prompt.
When the model chooses a command, the plugin opens a session to the appropriate server and calls the tool with typed arguments mapped from JSON Schema.
Adding a new MCP server
Click the ADD button and fill in:
label - A short, human-friendly server name used in tool names (
label__tool). - It should be unique across servers. Only[a-zA-Z0-9_-]are used; other characters are replaced automatically.server_address - Transport is detected from the address:
stdio: -
stdio: uv run server fastmcp_quickstart stdio-stdio: python /path/to/your_mcp_server.py --stdioStreamable HTTP: -
http://localhost:8000/mcp-https://your-host.tld/mcpSSE: -
http://localhost:8000/sse-sse://your-host.tld/sseorsse+https://your-host.tld/sse
authorization (optional) - Value for the
Authorizationheader on HTTP/SSE (e.g.,Bearer YOUR_TOKEN). - Not used for stdio.allowed_commands (optional) - Comma-separated list of tool names to expose from this server (whitelist). - Match the exact tool names reported by the MCP server (not titles).
disabled_commands (optional) - Comma-separated list of tool names to hide from this server (blacklist).
active - Enable/disable this server.
After saving, open any chat. During the command syntax build step, the plugin discovers tools on all active servers and publishes them to the model.
Example: quickstart via stdio
label:
quickstartserver_address:
stdio: uv run server fastmcp_quickstart stdioallowed_commands: (leave empty)
disabled_commands: (leave empty)
active:
ON
Discovered commands might look like:
[
{
"cmd": "quickstart__echo",
"instruction": "Echo a message back (server: quickstart)",
"params": [{ "name": "message", "type": "str", "description": "[required]" }],
"enabled": true
}
]
Example: remote docs server (HTTP/SSE)
label:
deepwikiserver_address:
https://example.com/mcp(or SSE:https://example.com/sse)authorization:
Bearer YOUR_TOKEN(if required)allowed_commands:
read_wiki_structure, read_wiki_contents, ask_questionactive:
ON
The model will see commands like:
[
{
"cmd": "deepwiki__read_wiki_structure",
"instruction": "Get a list of documentation topics for a GitHub repository (server: deepwiki)",
"params": [
{ "name": "repoName", "type": "str", "description": "GitHub repository: owner/repo (e.g. \"facebook/react\") [required]" }
],
"enabled": true
},
{
"cmd": "deepwiki__read_wiki_contents",
"instruction": "View documentation about a GitHub repository (server: deepwiki)",
"params": [
{ "name": "repoName", "type": "str", "description": "GitHub repository: owner/repo (e.g. \"facebook/react\") [required]" }
],
"enabled": true
},
{
"cmd": "deepwiki__ask_question",
"instruction": "Ask any question about a GitHub repository (server: deepwiki)",
"params": [
{ "name": "repoName", "type": "str", "description": "GitHub repository: owner/repo (e.g. \"facebook/react\") [required]" },
{ "name": "question", "type": "str", "description": "The question to ask about the repository [required]" }
],
"enabled": true
}
]
Caching (Tools Cache)
Enable “Cache tools list” to avoid discovering tools on every prompt.
TTL defines how long (in seconds) the cache stays valid per server (default: 300).
The plugin automatically invalidates the cache if you change server configuration (label, address, authorization, allow/deny lists).
To force refresh immediately, toggle a server off/on or modify any of its fields and save.
Transports
stdio: best for local processes started by PyGPT; no network involved.
Streamable HTTP: recommended for production; uses a duplex HTTP stream.
SSE: fully supported; useful for servers exposing an SSE endpoint.
The plugin detects the transport from
server_addressautomatically.
Security notes
authorizationis sent as theAuthorizationheader to HTTP/SSE servers; put the exact value you need (e.g.,Bearer <token>).Only connect to servers you trust. Tools can perform actions as implemented by the server.
Keep labels short and non-sensitive (labels are visible in tool names and logs).
Mouse And Keyboard
Introduced in version: 2.4.4 (2024-11-09)
Warning
Use this plugin with caution - allowing all options gives the model full control over the mouse and keyboard
The plugin allows for controlling the mouse and keyboard by the model. With this plugin, you can send a task to the model, e.g., “open notepad, type something in it” or “open web browser, do search, find something.”
Plugin capabilities include:
Get mouse cursor position
Control mouse cursor position
Control mouse clicks
Control mouse scroll
Control the keyboard (pressing keys, typing text)
Making screenshots
The + Tools option must be enabled to use this plugin.
Options:
General
Promptprompt
Prompt used to instruct how to control the mouse and keyboard.
Enable: Allow mouse movementallow_mouse_move
Allows mouse movement. Default: True
Enable: Allow mouse clickallow_mouse_click
Allows mouse click. Default: True
Enable: Allow mouse scrollallow_mouse_scroll
Allows mouse scroll. Default: True
Enable: Allow keyboard key pressallow_keyboard
Allows keyboard typing. Default: True
Enable: Allow making screenshotsallow_screenshot
Allows making screenshots. Default: True
Tool: mouse_get_poscmd.mouse_get_pos
Allows mouse_get_pos command execution. Default: True
Tool: mouse_set_poscmd.mouse_set_pos
Allows mouse_set_pos command execution. Default: True
Tool: make_screenshotcmd.make_screenshot
Allows make_screenshot command execution. Default: True
Tool: mouse_clickcmd.mouse_click
Allows mouse_click command execution. Default: True
Tool: mouse_movecmd.mouse_move
Allows mouse_move command execution. Default: True
Tool: mouse_scrollcmd.mouse_scroll
Allows mouse_scroll command execution. Default: True
Tool: keyboard_keycmd.keyboard_key
Allows keyboard_key command execution. Default: True
Tool: keyboard_typecmd.keyboard_type
Allows keyboard_type command execution. Default: True
Sandbox (Playwright)
Browsers directory- Path to Playwright browsers installation - leave empty to use defaultEngine- Playwright browser engine to use (chromium, firefox, webkit) - must be installedHeadles mode- Run Playwright browser in headless mode (default: False)Browser args- Additional Playwright browser arguments (comma-separated)Home URL- Playwright browser home URLViewport width- Playwright viewport width in pixelsViewport height- Playwright viewport height in pixels
You can run this mode in Sandbox (using Playwright - https://playwright.dev/) - to do it, just enable the Sandbox switch in the toolbox. Playwright browsers must be installed on your system. To do so, run:
pip install playwright
playwright install <chromium|firefox|webkit>
After that, set the path to directory with installed browsers in Mouse and Keyborad plugin settings option: Sandbox (Playwright) / Browsers directory.
Compiled binary and Snap versions have chromium preinstalled in the package.
OpenStreetMap
Provides everyday mapping utilities using OpenStreetMap services:
Forward and reverse geocoding via Nominatim
Search with optional near/bbox filters
Routing via OSRM (driving, walking, cycling)
Generate openstreetmap.org URL (center/zoom or bbox; optional marker)
Utility helpers: open an OSM website URL centered on a point; download a single XYZ tile
By default no images are downloaded; commands return URLs. The osm_tile command saves tiles under data/openstreetmap/ in the user data directory.
Important notes and usage etiquette
Nominatim requires a proper User-Agent and recommends including a contact email. Set both in the plugin options.
Public endpoints are community/demo services and not intended for heavy production use. If you need higher throughput, host your own services and set custom base URLs in options.
Always provide attribution to OpenStreetMap contributors where required by the data license.
Options
HTTP timeout (s)http_timeoutUser-Agentuser_agentContact email (Nominatim)contact_emailAccept-Languageaccept_languageNominatim basenominatim_baseOSRM baseosrm_baseTile basetile_baseDefault zoommap_zoomDefault widthmap_width Used only to estimate zoom for bbox (no image rendering).Default heightmap_height Used only to estimate zoom for bbox (no image rendering).
Tools (Commands)
Tool: osm_geocodeForward geocoding of free-text addresses/places using Nominatim. Supports optional country filtering and near/viewbox bounding. Each result includes
map_url(openstreetmap.org link centered on the result with a marker).Parameters: -
query(str, required) -limit(int, optional) -countrycodes(str, optional, e.g.pl,de) -viewbox(str|list, optional) —minlon,minlat,maxlon,maxlat-bounded(bool, optional) -addressdetails(bool, optional) -polygon_geojson(bool, optional) -near(str, optional) — address orlat,lonto bias results (creates a viewbox) -near_lat(float, optional),near_lon(float, optional),radius_m(int, optional) -zoom(int, optional) — zoom used formap_url(defaults to optionDefault zoom) -layers(str, optional) — optionallayers=value for OSM site URLsTool: osm_reverseReverse geocoding for a given coordinate. Response includes
map_url(openstreetmap.org link).Parameters: -
lat(float) andlon(float) orpoint(strlat,lon) -zoom(int, optional) — also used formap_urlzoom -addressdetails(bool, optional) -layers(str, optional) — optionallayers=value for OSM site URLsTool: osm_searchAlias convenience wrapper for
osm_geocodewith the same parameters (results also includemap_url).Tool: osm_routePlan a route via OSRM. Accepts addresses or coordinates for start/end and optional waypoints. Always returns
map_urlpointing to the openstreetmap.org Directions page (the route is drawn there). In addition: - mode=url — no OSRM call; returns onlymap_url(Directions) and waypoints, - mode=summary (default) — returns distance/duration (no geometry) +map_url, - mode=full — can include compact geometry (geometry_polyline6) and optionally steps.If
save_mapis true, an additionalpreview_url(regular map view centered/bbox) is returned; it does not replacemap_url.Parameters: -
start(str) orstart_lat/start_lon-end(str) orend_lat/end_lon-waypoints(list, optional) -profile(str, optional) —driving|walking|cycling(defaultdriving) -mode(str, optional) —url|summary|full(defaultsummary) -include_geometry(bool, optional) — include compact geometry (polyline6) infullmode -include_steps(bool, optional) — include step-by-step (fullmode only) -alternatives(int, optional) — 0|1; if >0 treated as true for OSRM alternatives -max_polyline_chars(int, optional) — limit geometry string length (default 5000) -debug_url(bool, optional) — include OSRM request URL in the response -save_map(bool, optional) — build an additionalpreview_url(OSM map centered/bbox) -zoom(int, optional) — zoom forpreview_urlwhen applicable -layers(str, optional) — optionallayers=forpreview_url-width(int, optional),height(int, optional) — used only to estimate bbox zoom -markers(list, optional) — forpreview_urlthe first valid point is used as markerDeprecated/no-op parameters (kept for backward compatibility):
out,color,weight.Tool: osm_staticmapBuild an openstreetmap.org URL (center/zoom or bbox; optional marker). Only the first valid marker is used.
width/heightare used only to estimate zoom when a bbox is provided.Parameters: -
center(str) orlat/lon(optional),zoom(int, optional) -bbox(list[4], optional) —minlon,minlat,maxlon,maxlat-markers(list, optional) — candidates for a single marker; the first valid point is used -marker(bool, optional) — if true and no markers provided, place a marker at center -layers(str, optional) — optionallayers=value -width(int),height(int) — used only to estimate zoom for bboxTool: osm_bbox_mapShortcut to build an openstreetmap.org URL from a bounding box.
Parameters: -
bbox(list[4], required) —minlon,minlat,maxlon,maxlat- optionalmarkers,width,heightTool: osm_show_urlBuild an openstreetmap.org URL centered at a point with a marker.
Parameters: -
point(str) orlat/lon-zoom(int, optional) -layers(str, optional)Tool: osm_route_urlBuild an openstreetmap.org Directions URL for start/end (the route is drawn on the page).
Parameters: -
start(str) /end(str) or coordinate pairs -mode(str, optional) —car|bike|footTool: osm_tileDownload a single XYZ tile (z/x/y.png). Useful for diagnostics or custom composition. The file is saved under
data/openstreetmap/by default.Parameters: -
z(int),x(int),y(int),out(str, optional)
Real Time
This plugin automatically adds the current date and time to each system prompt you send. You have the option to include just the date, just the time, or both.
When enabled, it quietly enhances each system prompt with current time information before sending it to model.
Options
Append timehour
If enabled, it appends the current time to the system prompt. Default: True
Append datedate
If enabled, it appends the current date to the system prompt. Default: True
Templatetpl
Template to append to the system prompt. The placeholder {time} will be replaced with the
current date and time in real-time. Default: Current time is {time}.
Serial port / USB
Provides commands for reading and sending data to USB ports.
Note
In the Snap version you must connect the interface first: https://snapcraft.io/docs/serial-port-interface
You can send commands to, for example, an Arduino or any other controllers using the serial port for communication.
Above is an example of co-operation with the following code uploaded to Arduino Uno and connected via USB:
// example.ino
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
String input = Serial.readStringUntil('\n');
if (input.length() > 0) {
Serial.println("OK, response for: " + input);
}
}
}
Options
USB portserial_port
USB port name, e.g. /dev/ttyUSB0, /dev/ttyACM0, COM3, Default: /dev/ttyUSB0
Connection speed (baudrate, bps)serial_bps
Port connection speed, in bps. Default: 9600
Timeouttimeout
Timeout in seconds. Default: 1
Sleepsleep
Sleep in seconds after connection. Default: 2
Tool: Send text commands to USB portcmd.serial_send
Allows serial_send command execution”. Default: True
Tool: Send raw bytes to USB portcmd.serial_send_bytes
Allows serial_send_bytes command execution. Default: True
Tool: Read data from USB portcmd.serial_read
Allows serial_read command execution. Default: True
Server (SSH/FTP)
The Server plugin provides integration for remote server management via SSH, SFTP, and FTP protocols. This plugin allows executing commands, transferring files, and managing directories on remote servers.
The plugin can be configured with various options to customize connectivity and feature access.
Options
Serversservers
Define server configurations with credentials and server details. The model does not access credentials, only names and ports.
enabled- Enable or disable server configuration
name- Name of the server. (visible for the model)
host- Hostname of the server.
login- Login username.
password- Password for the connection (hidden).
port- Connection port (SSH by default). (visible for the model)
desc- Description of the server configuration.
Network timeout (s)net_timeout
Set the timeout for network operations. Default: 30
Prefer system ssh/scp/sftpprefer_system_ssh
Choose whether to use native ssh/scp/sftp binaries and system keys. Default: False
ssh binaryssh_binary
Specify the path to the ssh binary. Default: “ssh”
scp binaryscp_binary
Specify the path to the scp binary. Default: “scp”
sftp binarysftp_binary
Specify the path to the sftp binary. Default: “sftp”
Extra ssh optionsssh_options
Add extra options to be appended to ssh/scp commands. Default: “”
Paramiko: Auto add host keysssh_auto_add_hostkey
Enable automatic addition of host keys for Paramiko SSHClient. Default: True
FTP/FTPS
FTP TLS defaultftp_use_tls_defaultChoose whether to use FTP over TLS (explicit) by default. Default: False
FTP passive modeftp_passive_defaultSet the default FTP mode to passive. Default: True
Telnet
Telnet: login prompttelnet_login_promptExpected prompt for username during Telnet login. Default: “login:”
Telnet: password prompttelnet_password_promptExpected prompt for password input during Telnet login. Default: “Password:”
Telnet: shell prompttelnet_promptDefine the prompt used to delimit command output in Telnet. Default: “$ “
SMTP
SMTP STARTTLS defaultsmtp_use_tls_defaultEnable STARTTLS by default for SMTP connections. Default: True
SMTP SSL defaultsmtp_use_ssl_defaultEnable SMTP over SSL by default. Default: False
Default From addresssmtp_from_defaultDefault address used if ‘from_addr’ not provided in smtp_send command. Default: “”
Commands
srv_execExecute remote shell command via SSH or Telnet.
srv_lsList remote directory contents using SFTP/FTP or SSH.
srv_getDownload files from remote servers to local directories.
srv_putUpload local files to remote servers.
srv_rmRemove remote files or empty directories (non-recursive).
srv_mkdirCreate directories on remote servers.
srv_statRetrieve information about remote files, such as type, size, and last modification time.
smtp_sendSend emails via SMTP, using the server configurations provided.
Slack
The Slack plugin integrates with the Slack Web API, enabling interaction with Slack workspaces through the application. This plugin supports OAuth2 for authentication, which allows for seamless integration with Slack services, enabling actions such as posting messages, retrieving users, and managing conversations.
Retrieving a list of users.
Listing all conversations.
Accessing conversation history.
Retrieving conversation replies.
Opening a conversation.
Posting a message in a chat.
Deleting a chat message.
Uploading files to Slack.
The plugin can be configured with various options to customize connectivity and feature access.
Options
API baseapi_base
Set the base URL for Slack’s API. Default: https://slack.com/api
OAuth baseoauth_base
Set the base URL for OAuth authorization. Default: https://slack.com
HTTP timeout (s)http_timeout
Specify the request timeout in seconds. Default: 30
OAuth2 (Slack)
OAuth2 Client IDoauth2_client_id
Provide the Client ID from your Slack App. This field is secret.
OAuth2 Client Secretoauth2_client_secret
Provide the Client Secret from your Slack App. This field is secret.
Redirect URIoauth2_redirect_uri
Specify the redirect URI that matches one in your Slack App. Default: http://127.0.0.1:8733/callback
Bot scopes (comma-separated)bot_scopes
Define the scopes for the bot token. Default: chat:write,users:read,…
User scopes (comma-separated)user_scopes
Specify optional user scopes for user token if required.
Tokens/cache
(auto/manual) Bot tokenbot_token
Input or obtain the bot token automatically or manually. This field is secret.
(auto) User token (optional)user_token
Get the user token if user scopes are required. This field is secret.
(auto) Refresh tokenoauth2_refresh_token
Store refresh token if rotation is enabled. This field is secret.
(auto) Expires at (unix)oauth2_expires_at
Automatically calculate the token expiry time.
(auto) Team IDteam_id
Cache the Team ID after auth.test or OAuth.
(auto) Bot user IDbot_user_id
Cache the Bot user ID post OAuth exchange.
(auto) Authed user IDauthed_user_id
Cache the authenticated user ID after auth.test/OAuth.
Auto-start OAuth when requiredoauth_auto_begin
Enable automatic initiation of OAuth flow if a command needs a token. Default: True
Open browser automaticallyoauth_open_browser
Open the authorize URL in default browser. Default: True
Use local server for OAuthoauth_local_server
Activate local HTTP server to capture redirect. Default: True
OAuth local timeout (s)oauth_local_timeout
Set time to wait for redirect with code. Default: 180
Success HTMLoauth_success_html
Specify HTML displayed on successful local callback.
Fail HTMLoauth_fail_html
Specify HTML displayed on failed local callback.
OAuth local port (0=auto)oauth_local_port
Set local HTTP port; must be registered in Slack App. Default: 8733
Allow fallback port if busyoauth_allow_port_fallback
Fallback to a free local port if preferred port is busy. Default: True
Commands
slack_oauth_begin
Begin the OAuth2 flow and return the authorize URL.
slack_oauth_exchange
Exchange authorization code for tokens.
slack_oauth_refresh
Refresh token if rotation is enabled.
slack_auth_test
Test authentication and retrieve IDs.
slack_users_list
List workspace users (contacts).
slack_conversations_list
List channels/DMs visible to the token.
slack_conversations_history
Fetch channel/DM history.
slack_conversations_replies
Fetch a thread by root ts.
slack_conversations_open
Open or resume DM or MPDM.
slack_chat_post_message
Post a message to a channel or DM.
slack_chat_delete
Delete a message from a channel or DM.
slack_files_upload
Upload a file via external flow and share in Slack.
System Prompt Extra (append)
The plugin appends additional system prompts (extra data) from a list to every current system prompt. You can enhance every system prompt with extra instructions that will be automatically appended to the system prompt.
Options
Promptsprompts
List of extra prompts - prompts that will be appended to system prompt. All active extra prompts defined on list will be appended to the system prompt in the order they are listed here.
System (OS)
The plugin provides access to the operating system and executes system commands.
Options:
General
Auto-append CWD to sys_execauto_cwd
Automatically append current working directory to sys_exec command. Default: True
Tool: sys_execcmd.sys_exec
Allows sys_exec command execution. If enabled, provides system commands execution. Default: True
Sandbox (Docker)
Sandbox (docker container)sandbox_dockerExecutes all
sys_execshell commands inside an isolated Docker container. Requires Docker to be installed and running. Default:FalseDockerfiledockerfileThe Dockerfile used to build the sandbox image. You can customize it and rebuild via Tools → “Rebuild Docker sandbox Images”. Default: a minimal Python image with
/dataworkdir.Docker image nameimage_nameName of the Docker image used by the sandbox. Default:
pygpt_systemDocker container namecontainer_nameName of the Docker container started for the sandbox. Default:
pygpt_system_containerDocker run commanddocker_entrypointCommand executed when starting the container (keeps container alive). Default:
tail -f /dev/nullDocker volumesdocker_volumesHost ↔ container volume mappings. By default, user data directory on host (
{workdir}) is mapped read/write to/datain the container.Structure of each item:
enabled(bool) – include this mappingdocker(text) – container path (e.g./data)host(text) – host path (e.g.{workdir})
Default: one mapping of
{workdir}→/dataDocker portsdocker_portsHost ↔ container port mappings. You can specify protocol on the container side (e.g.
8888/tcp), otherwise TCP is assumed.Structure of each item:
enabled(bool) – include this mappingdocker(text) – container port (e.g.8888or8888/tcp)host(int) – host port (e.g.8888)
Default: empty list (no ports exposed)
Notes:
When sandboxing is enabled, relative paths passed in commands are resolved against the user data directory and mounted into the container at
/data.The plugin checks for Docker availability and will prompt to build the image if it does not exist.
WinAPI (Windows)
Enable WinAPIwinapi_enabledEnables Windows Desktop/WinAPI integration (window management, input, screenshots) on Microsoft Windows. Default:
TrueKeys: per-char delay (ms)win_keys_per_char_delay_msDelay between characters when typing Unicode text with
win_keys_text. Default:2Keys: hold (ms)win_keys_hold_msHold duration for modifier keys (e.g., CTRL/ALT/SHIFT) in
win_keys_send. Default:50Keys: gap (ms)win_keys_gap_msGap between consecutive key taps in
win_keys_send. Default:30Drag: step delay (ms)win_drag_step_delay_msDelay between intermediate mouse-move steps during
win_drag. Default:10
Notes:
WinAPI features are available only on Microsoft Windows. On other platforms, WinAPI commands are not exposed.
WinAPI commands are added to the command syntax list only when
platform == "Windows"andwinapi_enabledisTrue.Window and area screenshots use Qt’s
QScreen.grabWindow(...); images are saved as PNG files (non-absolute paths are stored under the user data directory).
Telegram
The plugin enables integration with Telegram for both bots and user accounts through the Bot API and the Telethon library respectively. It allows sending and receiving messages, managing chats, and handling updates.
Sending text messages to a chat or channel.
Sending photos with an optional caption to a chat or channel.
Sending documents or files to a chat or channel.
Retrieving information about a specific chat or channel.
Polling for updates in bot mode.
Downloading files using a file identifier.
Listing contacts in user mode.
Listing recent dialogs or chats in user mode.
Retrieving recent messages from a specific chat or channel in user mode.
Options
ModemodeChoose the mode of operation. Default: bot
Available modes:
Bot (via
Bot API)User (via
Telethon)
API base (Bot)api_baseBase URL for the Telegram Bot API. Default: https://api.telegram.org
HTTP timeout (s)http_timeoutTimeout in seconds for HTTP requests. Default: 30
Bot Options
Bot tokenbot_tokenToken obtained from BotFather for authentication.
Default parse_modedefault_parse_modeDefault parse mode for sending messages. Default: HTML
Available modes:
HTML
Markdown
MarkdownV2
Disable link previews (default)default_disable_previewOption to disable link previews by default. Default: False
Disable notifications (default)default_disable_notificationOption to disable message notifications by default. Default: False
Protect content (default)default_protect_contentOption to protect the content by default. Default: False
(auto) last update idlast_update_idAutomatically stored ID after using tg_get_updates.
User Options (Telethon)
API ID (user mode)api_idID required for user authentication. Get from: https://my.telegram.org
API Hash (user mode)api_hashHash required for user authentication. Get from: https://my.telegram.org
Phone number (+CC...)phone_numberPhone number used to send login code in user mode.
(optional) 2FA passwordpassword_2faPassword for two-step verification if enabled.
(auto) Session (StringSession)user_sessionSession string saved after successful login in user mode.
Auto-begin login when neededauto_login_beginAutomatically send login code if authentication is needed and not available. Default: True
Commands
tg_login_beginBegin Telegram user login (sends code to phone).
tg_login_completeComplete login with code and optional 2FA password.
tg_logoutLog out and clear saved session.
tg_modeReturn current mode (bot|user).
tg_meGet authorized identity using Bot getMe or User get_me.
tg_send_messageSend text message to chat/channel.
tg_send_photoSend photo to chat/channel.
tg_send_documentSend document/file to chat/channel.
tg_get_chatGet chat info by id or @username.
tg_get_updatesPoll updates in bot mode, automatically store last_update_id.
tg_download_fileDownload file by file_id in bot mode.
tg_contacts_listList contacts in user mode.
tg_dialogs_listList recent dialogs or chats in user mode.
tg_messages_getGet recent messages from a chat in user mode.
Tuya (IoT)
The Tuya plugin integrates with Tuya’s Smart Home platform, enabling seamless interactions with your smart devices via the Tuya Cloud API. This plugin provides a user-friendly interface to manage and control devices directly from your assistant.
Provide your Tuya Cloud credentials to enable communication.
Access and list all smart devices connected to your Tuya app account.
Retrieve detailed information about each device, including its status and supported functions.
Effortlessly search for devices by their names using cached data for quick access.
Control devices by turning them on or off, toggle states, and set specific device parameters.
Send custom commands to devices for more advanced control.
Read sensor values and normalize them for easy interpretation.
Options
API baseapi_baseBase URL for interacting with the Tuya API. Default: https://openapi.tuyaeu.com
HTTP timeout (s)http_timeoutRequests timeout duration in seconds. Default: 30
LanguagelangLanguage setting for API interactions. Default: en
Commands
Auth
tuya_set_keysInput your Tuya Cloud credentials to enable device interactions.
tuya_set_uidSet your Tuya App Account UID for managing device listings.
tuya_token_getObtain an access token for authenticated API requests.
Devices
tuya_devices_listList all devices associated with your account UID, with options to paginate results.
tuya_device_getRetrieve detailed information for a specified device.
tuya_device_statusCheck the current status and data point values of a device.
tuya_device_functionsDiscover supported functions and data point codes for a specific device.
tuya_find_deviceQuickly locate devices using name-based searches from cached data.
Control
tuya_device_setSet specific data point values for a device or use multiple settings at once.
tuya_device_sendSend a list of raw commands directly to a device for execution.
tuya_device_onTurn a device on with an optional switch code.
tuya_device_offSwitch a device off, with automatic code detection if needed.
tuya_device_toggleToggle a device’s on/off state.
Sensors
tuya_sensors_readRead normalized sensor values from your connected devices.
Vision (inline)
The plugin integrates vision capabilities across all chat modes, not just Vision mode. Once enabled, it allows the model to seamlessly switch to vision processing in the background whenever an image attachment or vision capture is detected.
Tip
When using Vision (inline) by utilizing a plugin in standard mode, such as Chat (not Vision mode), the + Vision special checkbox will appear at the bottom of the Chat window. It will be automatically enabled any time you provide content for analysis (like an uploaded photo). When the checkbox is enabled, the vision model is used. If you wish to exit the vision model after image analysis, simply uncheck the checkbox. It will activate again automatically when the next image content for analysis is provided.
Options
Modelmodel
The model used to temporarily provide vision capabilities. Default: gpt-4-vision-preview.
Promptprompt
The prompt used for vision mode. It will append or replace current system prompt when using vision model.
Replace promptreplace_prompt
Replace whole system prompt with vision prompt against appending it to the current prompt. Default: False
Tool: capturing images from cameracmd.camera_capture
Allows capture command execution. If enabled, model will be able to capture images from camera itself. The + Tools option must be enabled. Default: False
Tool: making screenshotscmd.make_screenshot
Allows screenshot command execution. If enabled, model will be able to making screenshots itself. The + Tools option must be enabled. Default: False
Voice Control (inline)
The plugin provides voice control command execution within a conversation.
See the Accessibility section for more details.
Web Search
PyGPT lets you connect model to the internet and carry out web searches in real time as you make queries.
To activate this feature, turn on the Web Search plugin found in the Plugins menu.
Web searches are provided by DuckDuckGo, Google Custom Search Engine and Microsoft Bing APIs and can be extended with other search engine providers.
Options
Provider provider
Choose the provider. Default: Google
Available providers:
Google
Microsoft Bing
To use this provider, you need an API key, which you can obtain by registering an account at:
https://developers.google.com/custom-search/v1/overview
After registering an account, create a new project and select it from the list of available projects:
https://programmablesearchengine.google.com/controlpanel/all
After selecting your project, you need to enable the Whole Internet Search option in its settings.
Then, copy the following two items into PyGPT:
Api Key
CX ID
These data must be configured in the appropriate fields in the Plugins / Settings... menu:
Options
Google Custom Search API KEYgoogle_api_key
You can obtain your own API key at https://developers.google.com/custom-search/v1/overview
Google Custom Search CX IDgoogle_api_cx
You will find your CX ID at https://programmablesearchengine.google.com/controlpanel/all - remember to enable “Search on ALL internet pages” option in project settings.
Microsoft Bing
Bing Search API KEYbing_api_key
You can obtain your own API key at https://www.microsoft.com/en-us/bing/apis/bing-web-search-api
Bing Search API endpointbing_endpoint
API endpoint for Bing Search API, default: https://api.bing.microsoft.com/v7.0/search
General options
Number of pages to searchnum_pages
Number of max pages to search per query. Default: 10
Max content charactersmax_page_content_length
Max characters of page content to get (0 = unlimited). Default: 0
Per-page content chunk sizechunk_size
Per-page content chunk size (max characters per chunk). Default: 20000
Disable SSL verifydisable_ssl
Disables SSL verification when crawling web pages. Default: False
Use raw content (without summarization)raw
Return raw content from web search instead of summarized content. Provides more data but consumes more tokens. Default: True
Timeouttimeout
Connection timeout (seconds). Default: 5
User agentuser_agent
User agent to use when making requests. Default: Mozilla/5.0.
Max result lengthmax_result_length
Max length of the summarized or raw result (characters). Default: 50000
Max summary tokenssummary_max_tokens
Max tokens in output when generating summary. Default: 1500
Tool: web_searchcmd.web_search
Allows web_search command execution. If enabled, model will be able to search the Web. Default: True
Tool: web_url_opencmd.web_url_open
Allows web_url_open command execution. If enabled, model will be able to open specified URL and summarize content. Default: True
Tool: web_url_rawcmd.web_url_raw
Allows web_url_raw command execution. If enabled, model will be able to open specified URL and get the raw content. Default: True
Tool: web_requestcmd.web_request
Allows web_request command execution. If enabled, model will be able to send any HTTP request to specified URL or API endpoint. Default: True
Tool: web_extract_linkscmd.web_extract_links
Allows web_extract_links command execution. If enabled, model will be able to open URL and get list of all links from it. Default: True
Tool: web_extract_imagescmd.web_extract_images
Allows web_extract_images command execution. If enabled, model will be able to open URL and get list of all images from it.. Default: True
Advanced
Model used for web page summarizesummary_model
Model used for web page summarize. Default: gpt-3.5-turbo-1106
Summarize promptprompt_summarize
Prompt used for web search results summarize, use {query} as a placeholder for search query
Summarize prompt (URL open)prompt_summarize_url
Prompt used for specified URL page summarize
Indexing
Tool: web_indexcmd.web_index
Allows web_index command execution. If enabled, model will be able to index pages and external content using LlamaIndex (persistent index). Default: True
Tool: web_index_querycmd.web_index_query
Allows web_index_query command execution. If enabled, model will be able to quick index and query web content using LlamaIndex (in-memory index). Default: True
Auto-index all used URLs using LlamaIndexauto_index
If enabled, every URL used by the model will be automatically indexed using LlamaIndex (persistent index). Default: False
Index to useidx
ID of index to use for web page indexing (persistent index). Default: base
–
Wikipedia
The Wikipedia plugin allows for comprehensive interactions with Wikipedia, including language settings, article searching, summaries, and random article discovery. This plugin offers a variety of options to optimize your search experience.
Set your preferred language for Wikipedia queries.
Retrieve and check the current language setting.
Explore a list of supported languages.
Search for articles using keywords or get suggestions for queries.
Obtain summaries and detailed page content.
Discover articles by geographic location or randomly.
Open articles directly in your web browser.
Options
LanguagelangDefault Wikipedia language. Default: en
Auto Suggestauto_suggestEnable automatic suggestions for titles. Default: True
Follow RedirectsredirectEnable following of page redirects. Default: True
Rate Limitrate_limitControl Wikipedia API request rate limiting. Default: True
User-Agentuser_agentCustom User-Agent string for requests. Default: pygpt-net-wikipedia-plugin/1.0 (+https://pygpt.net)
Summary Sentencessummary_sentencesDefault number of sentences in summaries. Default: 3
Default Results Limitresults_defaultNumber of results for searches. Default: 10
Content Maximum Characterscontent_max_charsMaximum characters for page content. Default: 5000
Max List Itemsmax_list_itemsMaximum items from article lists. Default: 50
Full Content by Defaultcontent_full_defaultReturn full content by default. Default: False
Commands
Language
wp_set_langSet the language for Wikipedia queries.
wp_get_langRetrieve current language setting.
wp_languagesGet list of supported languages.
Search / Suggest
wp_searchSearch for articles using keywords.
wp_suggestGet title suggestions for queries.
Read
wp_summaryFetch a summary of a Wikipedia article.
wp_pageAccess full details of a Wikipedia article.
wp_sectionGet content of a specific article section.
Discover
wp_randomDiscover random Wikipedia article titles.
wp_geosearchFind articles near specific coordinates.
Utilities
wp_openOpen articles in a web browser by title or URL.
Wolfram Alpha
Provides computational knowledge via Wolfram Alpha: short answers, full JSON pods, numeric and symbolic math (solve, derivatives, integrals), unit conversions, matrix operations, and plots rendered as images. Images are saved under data/wolframalpha/ in the user data directory.
Options
API baseapi_baseBase API URL (default:
https://api.wolframalpha.com). Change only if you use a proxy/gateway.HTTP timeout (s)http_timeoutRequest timeout in seconds.
Wolfram Alpha AppIDwa_appidAppID used to authenticate requests. Stored as a secret. Get it from: https://developer.wolframalpha.com/portal/myapps/
UnitsunitsPreferred unit system for supported endpoints:
metricornonmetric.Simple backgroundsimple_backgroundBackground for Simple API images:
whiteortransparent.Simple layoutsimple_layoutLayout for Simple API images, e.g.,
labelbarorinputonly.Simple widthsimple_widthTarget width for Simple API images (pixels). Leave empty to use the service default.
Tools (Commands)
Tool: wa_shortcmd.wa_shortReturns a concise text answer suitable for quick facts and simple numeric results.
Parameters: -
query(str, required) — natural-language or math input.Tool: wa_spokencmd.wa_spokenReturns a one-sentence, spoken-style answer.
Parameters: -
query(str, required)Tool: wa_simplecmd.wa_simpleRenders a compact result image (PNG/GIF) via the Simple API and saves it to a file.
Parameters: -
query(str, required) -out(str, optional) — output path; if relative, saved underdata/wolframalpha/. -background(str, optional) —white|transparent. -layout(str, optional) — e.g.,labelbar|inputonly. -width(int, optional) — target image width (px).Tool: wa_querycmd.wa_queryRuns a full query and returns pods as JSON (
queryresult.pods). Can optionally download pod images.Parameters: -
query(str, required) -format(str, optional) — e.g.,plaintext,image. -assumptions(list[str], optional) — repeatedassumptionparameters. -podstate(str, optional) — pod state id. -scantimeout(int, optional),podtimeout(int, optional) -maxwidth(int, optional) — max image width. -download_images(bool, optional) — if true, downloads pod images. -max_images(int, optional) — limit for downloaded images.Tool: wa_calculatecmd.wa_calculateEvaluates or simplifies an expression. Tries the short-answer endpoint first, then falls back to a full JSON query.
Parameters: -
expr(str, required)Tool: wa_solvecmd.wa_solveSolves one equation or a system of equations over a chosen domain.
Parameters: -
equation(str, optional) — single equation. -equations(list[str], optional) — list of equations. -var(str, optional) — single variable. -variables(list[str], optional) — variables set. -domain(str, optional) —reals|integers|complexes.Tool: wa_derivativecmd.wa_derivativeComputes a derivative (with optional evaluation at a point).
Parameters: -
expr(str, required) -var(str, optional, defaultx) -order(int, optional, default1) -at(str, optional) — evaluation point, e.g.,x=0.Tool: wa_integralcmd.wa_integralComputes an indefinite or definite integral.
Parameters: -
expr(str, required) -var(str, optional, defaultx) -a(str, optional) — lower bound (for definite integrals). -b(str, optional) — upper bound.Tool: wa_units_convertcmd.wa_units_convertConverts numeric values between units.
Parameters: -
value(str, required) — numeric value. -from(str, required) — source unit. -to(str, required) — target unit.Tool: wa_matrixcmd.wa_matrixPerforms matrix operations.
Parameters: -
op(str, optional, defaultdeterminant) —determinant|inverse|eigenvalues|rank. -matrix(list[list], required) — e.g.,[[1,2],[3,4]].Tool: wa_plotcmd.wa_plotGenerates a function plot as an image via the Simple API and saves it to a file.
Parameters: -
func(str, required) — function, e.g.,sin(x). -var(str, optional, defaultx) -a(str, optional) — domain start. -b(str, optional) — domain end. -out(str, optional) — output path; relative paths go underdata/wolframalpha/.
X/Twitter
The X/Twitter plugin integrates with the X platform, allowing for comprehensive interactions such as tweeting, retweeting, liking, media uploads, and more. This plugin requires OAuth2 authentication and offers various configuration options to manage API interactions effectively.
Retrieve user details by providing their username.
Fetch user information using their unique ID.
Access recent tweets from a specific user.
Search for recent tweets using specific keywords or hashtags.
Create a new tweet and post it on the platform.
Remove an existing tweet from your profile.
Reply to a specific tweet with a new comment.
Quote a tweet while adding your own comments or thoughts.
Like a tweet to show appreciation or support.
Remove a like from a previously liked tweet.
Retweet a tweet to share it with your followers.
Undo a retweet to remove it from your profile.
Hide a specific reply to a tweet.
List all bookmarked tweets for easy access.
Add a tweet to your bookmarks for later reference.
Remove a tweet from your bookmarks.
Upload media files such as images or videos for tweeting.
Set alternative text for uploaded media for accessibility.
Options
API baseapi_baseBase API URL. Default: https://api.x.com
Authorize baseauthorize_baseBase URL for OAuth authorization. Default: https://x.com
HTTP timeout (s)http_timeoutRequests timeout in seconds. Default: 30
OAuth2 PKCE
OAuth2 Client IDoauth2_client_idClient ID from X Developer Portal. Secret
OAuth2 Client Secret (optional)oauth2_client_secretOnly for confidential clients. Secret
Confidential client (use Basic auth)oauth2_confidentialEnable if your App is confidential. Default: False
Redirect URIoauth2_redirect_uriMust match one of the callback URLs in your X App. Default: http://127.0.0.1:8731/callback
Scopesoauth2_scopesOAuth2 scopes for Authorization Code with PKCE. Default: tweet.read users.read like.read like.write tweet.write bookmark.read bookmark.write tweet.moderate.write offline.access
(auto) code_verifieroauth2_code_verifierGenerated by x_oauth_begin. Secret
(auto) stateoauth2_stateGenerated by x_oauth_begin. Secret
(auto) Access tokenoauth2_access_tokenStored user access token. Secret
(auto) Refresh tokenoauth2_refresh_tokenStored user refresh token. Secret
(auto) Expires at (unix)oauth2_expires_atAuto-calculated expiry time.
App-only Bearer (optional for read-only)
App-only Bearer token (optional)bearer_tokenOptional app-only bearer for read endpoints. Secret
Convenience cache
(auto) User IDuser_idCached after x_me or oauth exchange.
(auto) UsernameusernameCached after x_me or oauth exchange.
Auto-start OAuth when requiredoauth_auto_beginStart PKCE flow automatically if needed. Default: True
Open browser automaticallyoauth_open_browserOpen authorize URL in default browser. Default: True
Use local server for OAuthoauth_local_serverCapture redirect using a local server. Default: True
OAuth local timeout (s)oauth_local_timeoutTime to wait for redirect with code. Default: 180
Success HTMLoauth_success_htmlHTML displayed on local callback success.
Fail HTMLoauth_fail_htmlHTML displayed on local callback error.
OAuth local port (0=auto)oauth_local_portLocal HTTP port for callback. Default: 8731
Allow fallback port if busyoauth_allow_port_fallbackUse a free port if the preferred port is busy. Default: True
Commands
Auth
x_oauth_beginBegin OAuth2 PKCE flow.
x_oauth_exchangeExchange authorization code for tokens.
x_oauth_refreshRefresh access token using refresh_token.
Users
x_meGet authorized user information.
x_user_by_usernameLookup user by username.
x_user_by_idLookup user by ID.
Timelines / Search
x_user_tweetsRetrieve user Tweet timeline.
x_search_recentPerform recent search within the last 7 days.
Tweet CRUD
x_tweet_createCreate a new Tweet/Post.
x_tweet_deleteDelete a Tweet by ID.
x_tweet_replyReply to a Tweet.
x_tweet_quoteQuote a Tweet.
Actions
x_likeLike a Tweet.
x_unlikeUnlike a Tweet.
x_retweetRetweet a Tweet.
x_unretweetUndo a retweet.
x_hide_replyHide or unhide a reply to your Tweet.
Bookmarks
x_bookmarks_listList bookmarks.
x_bookmark_addAdd a bookmark.
x_bookmark_removeRemove a bookmark.
Media
x_upload_mediaUpload media and return media_id.
x_media_set_alt_textAttach alt text to uploaded media.