ChatGPT On Your Mac with..

Locally Running Plugins 🤖

Let ChatGPT access your Mac and see your selected files and text. Build your own functions and let it do tasks for you.

5 out of 5 stars

I'm amazed with the therapist-function so far. Thank you very much!

(Read more)
Affectionate-Fix-404

5 out of 5 stars

This is a much faster process than the alternate ChatGPT options I was using, and best of all there is no subscription to worry about

(Read more)
Arnaud L.

5 out of 5 stars

This is the most useful toolkit for quick and daily use of ChatGPT.

(Read more)
Elie Arnulf

Keyboard First

Navigate ChatGPT by Shortcuts ⌨

Use ChatGPT with your keyboard only. No more switching to your mouse. No more clicking around. Just type and go.

Save in File.
Type `⌘ + S` to save the current chat in a file. You can choose between the last message or the whole chat. You will be asked to choose a path to save the file.
Copy to Clipboard.
With `⌘ + ⇧ + C` you can copy the l...
Extract Markdown.
`⌘ + M` extracts the markdown from ...
Text View.
If you need to copy a little sectio...
Change Model.
With `⌃ + C` you access the Chat Co...
Change Temperature.
You can change the temperature of C...
Add/Remove Plugins.
You can add and remove Plugins duri...

No Membership Necessary

Add Plugins To Every Chat 🔌

Use locally running plugins. This allows you to give ChatGPT access to your machine. And you can even add your own plugins, too.

Webbrowser (β).
Let ChatGPT access a website and give it a specific task. (This plugin is using the langchain implementation and will be adjusted over time. It works so far, but it might need some fine tuning.)
Search Google.
Give ChatGPT access to Google Searc...
Run Python Code (β).
ChatGPT with the power of Python. L...
Run Bash Command (β).
Let ChatGPT run a bash command. You...
Create Calendar Event.
Let ChatGPT add an event to one of ...
Get Selected File.
Gives ChatGPT the path of the selec...
Build Your Own Plugin.
You can create your own plugins usi...

For The Best Workflow..

Trigger ChatGPT From Anywhere 💬

There are multiple ways how you can trigger your tools. Whether you are a developer or not. Each tool can be triggered separately.

Shortcut.
You can use which ever shortcut you want. I would recommend using Karabiner Elements and the 'Hyper Key' to trigger the tools.
Snippet.
Type a text in any application and open the chat window.
Panel.
Type `⌘ + ;` in any application to open ScriptKit and search for any script you want to run.
Bash.
You can use `~/.kit/kar` to trigger your tool with bash.

Your ChatGPT Tools

Prompt Libraries on Steroids 🔋

Add functions to your libraries. Accessible from any application - just one shortcut / snippet away. And you can create your own. There's a tool for that, too.

🧰 chatGpt /

Add ChatGPT Tool 🔧

Create a custom tool for ChatGPT.

// Author: Eduard Uffelmann    
// Linkedin: https://www.linkedin.com/in/euffelmann/
// Twitter: @schmedu_
// Website: https://schmedu.com

import "@johnlindquist/kit";
import { createTool } from "../lib/tool-creation";

await createTool();
    
💻 Setup
Easy
🏷️ Tags
create custom tool, create cus...

🧰 chatGpt /

ChatGPT 4 🔧

Open a chat with ChatGPT in any application and ei... (Read more)

// Author: Eduard Uffelmann    
// Linkedin: https://www.linkedin.com/in/euffelmann/
// Twitter: @schmedu_
// Website: https://schmedu.com

import "@johnlindquist/kit";
import { startChat } from "../lib/common";

await startChat({
    model: "gpt-4",
    temperature: 1,
    functions: [],
});
    
💻 Setup
Easy
🏷️ Tags
chatgpt, gpt4

🧰 chatGpt /

ChatGPT With Functions 🔧

Allow ChatGPT to access your computer and run func... (Read more)

// Author: Eduard Uffelmann    
// Linkedin: https://www.linkedin.com/in/euffelmann/
// Twitter: @schmedu_
// Website: https://schmedu.com

import "@johnlindquist/kit";
import { startChat } from "../lib/common";
import os from "os";
// import { CustomFunctions } from "../../../lib/chatGptFunctions"; // For user build functions that are stored in ~/.kenv/lib/chatGptFunctions/index.ts

await startChat({
    model: "gpt-3.5-turbo-0613",
    temperature: 1,
    systemMessage: `You have now access to my system and you are able to perform any direct interactions with my local environment such as accessing my file system, running bash commands, executing python code with the 'runPython' function, and creating/saving files on my own io the platform. 
The name of the user is ${os.userInfo().username}.
You can use every function on the users macOS system to accomplish every task, especially everything that needs to be computed. Try to be bold!

IMPORTANT: Before you decide to install any packages, please check if they are already installed.
Don't run commands, that could return a huge output, always limit the output to the necessary information.
Always assume you are in the Home directory when you run a bash command.`,
    functions: [
        "all",
        // CustomFunctions.greetingsFunction, // Just an example of how to use a custom function
    ],
});
    
💻 Setup
Easy
🏷️ Tags
python, bash, kit, chatgpt, gp...

🧰 chatGpt /

ChatGPT 3.5 🔧

Open a chat with ChatGPT in any application and ei... (Read more)

// Author: Eduard Uffelmann    
// Linkedin: https://www.linkedin.com/in/euffelmann/
// Twitter: @schmedu_
// Website: https://schmedu.com

import "@johnlindquist/kit";
import { startChat } from "../lib/common";

await startChat({
    model: "gpt-3.5-turbo-0613",
    temperature: 1,
    functions: ["setReminder"],
    chatModifiers: []
});
    
💻 Setup
Easy
🏷️ Tags
chatgpt, gpt3, gpt4

🧰 chatGpt /

ChatGPTherapist 🔧

Chat with your ai therapist.

// Author: Eduard Uffelmann    
// Linkedin: https://www.linkedin.com/in/euffelmann/
// Twitter: @schmedu_
// Website: https://schmedu.com

import "@johnlindquist/kit";
import { startChat } from "../lib/common";

await startChat({
    systemMessage: `You are a therapist. Stay in your role and don't play out of character. Don't write any comments or recommendations apart from that role.`,
});
    
💻 Setup
Easy
🏷️ Tags
getHumanInput

🧰 chatGpt /

Chat History 🔧

Look through your previous chat and continue where... (Read more)

// Author: Eduard Uffelmann    
// Linkedin: https://www.linkedin.com/in/euffelmann/
// Twitter: @schmedu_
// Website: https://schmedu.com

import { resumeChat } from "../lib/common";

await resumeChat();
    
💻 Setup
Easy
🏷️ Tags
chat history, resume previous ...

🧰 chatGpt /

Continue Last Chat 🔧

Continue where you left of.

// Author: Eduard Uffelmann    
// Linkedin: https://www.linkedin.com/in/euffelmann/
// Twitter: @schmedu_
// Website: https://schmedu.com

import "@johnlindquist/kit";
import { continueLastChat } from "../lib/common";

await continueLastChat();
    
💻 Setup
Easy
🏷️ Tags
chat history, resume last chat...

🧰 chatGpt /

Correct Text With ChatGpt 🔧

Correct Text for misspellings and grammatical erro... (Read more)

// Author: Eduard Uffelmann    
// Linkedin: https://www.linkedin.com/in/euffelmann/
// Twitter: @schmedu_
// Website: https://schmedu.com

import "@johnlindquist/kit";
import { startChat } from "../lib/common";

let selectedText = await getSelectedText();

let task = `Could you please correct the following text from misspellings and grammatical errors? Just answer with your corrected text. Try to write like a human and don't use so many phrases like 'Therefore', 'Moreover', 'All in all', etc.
\`\`\`
${selectedText}
\`\`\``;

await startChat({
    prompt: task,
    model: "gpt-3.5-turbo",
    temperature: 1,
    runPromptImmediately: true,
});
    
💻 Setup
Easy
🏷️ Tags
correct text, chatgpt, gpt3, g...

🧰 chatGpt /

Create Cal Event with ChatGPT 🔧

Allow ChatGPT to create a calendar Event for you v... (Read more)

// Author: Eduard Uffelmann    
// Linkedin: https://www.linkedin.com/in/euffelmann/
// Twitter: @schmedu_
// Website: https://schmedu.com

import "@johnlindquist/kit";
import { startChat } from "../lib/common";
import { getCalendars, getCurrentDayOfWeek } from "../lib/functions/implementations/calendar";
import { Functions } from "../lib/functions";
import { getSetting } from "../lib/settings";

let calendars = await getCalendars();

const defaultCalendar = await getSetting("defaultCalendar");
const CALENDAR_STRING = calendars.map(cal => `- ${cal}`).join("\n")
let prompt = undefined;
await startChat({
    prompt,
    model: "gpt-4-0613", // gpt-3.5 is not reliable with times and calculation
    temperature: 1,
    systemMessage: `You are my personal assistant and you schedule my events in my calendar. I want you to create an event for me.
IMPORTANT: The current datetime is: ${new Date().toLocaleString()} in 'MM/DD/YYYY, HH:MM:SS AM/PM', it's ${await getCurrentDayOfWeek()}.
If there is no end date or duration specified, I want you to create an event for 1 hour.

The available calendars are:
${CALENDAR_STRING}

Use the first '${defaultCalendar}' calendar if no calendar is specified.

IMPORTANT: Use the 'createEvent' function to create the event.`,
    functions: [Functions.createEventFunction],
});
    
💻 Setup
Easy
🏷️ Tags
create cal event, apple, chatg...

🧰 chatGpt /

Excuse my French 🔧

Rewrite a text in a professional manner, so it can... (Read more)

// Author: Eduard Uffelmann    
// Linkedin: https://www.linkedin.com/in/euffelmann/
// Twitter: @schmedu_
// Website: https://schmedu.com

import "@johnlindquist/kit";
import { startChat } from "../lib/common";

let selectedText = await getSelectedText();
let task = `Please rewrite the following text in a professional manner, so I can use it for work. Keep it as short as possible. Here is the text:
\`\`\`
${selectedText}
\`\`\``;

await startChat({
    prompt: task,
    model: "gpt-3.5-turbo",
    temperature: 1,
});
    
💻 Setup
Easy
🏷️ Tags
excuse my french, rewrite emai...

🧰 chatGpt /

Explain like I'm Five 🔧

Explain the selected text like I am five years old... (Read more)

// Author: Eduard Uffelmann    
// Linkedin: https://www.linkedin.com/in/euffelmann/
// Twitter: @schmedu_
// Website: https://schmedu.com

import "@johnlindquist/kit";
import { startChat } from "../lib/common";

let selectedText = await getSelectedText();

let task = `Could you please explain the following text like I am five years old. Just answer with the text.
\`\`\`
${selectedText}
\`\`\``;

await startChat({
    prompt: task,
    model: "gpt-3.5-turbo",
    temperature: 1,
});
    
💻 Setup
Easy
🏷️ Tags
explain like im five, eli5, ch...

🧰 chatGpt /

Rephrase Text With ChatGpt 🔧

Rephrase the selected text with ChatGpt.

// Author: Eduard Uffelmann    
// Linkedin: https://www.linkedin.com/in/euffelmann/
// Twitter: @schmedu_
// Website: https://schmedu.com

import "@johnlindquist/kit";
import { startChat } from "../lib/common";

let selectedText = await getSelectedText();

let writingStyle = await arg(
    { placeholder: "Choose writing style", strict: false },
    [
        "default",
        "academic",
        "analytical",
        "argumentative",
        "conversational",
        "creative",
        "descriptive",
        "epigrammatic",
        "epistolary",
        "expository",
        "informative",
        "instructive",
        "journalistic",
        "metaphorical",
        "narrative",
        "persuasive",
        "poetic",
        "satirical",
        "critical",
        "technical",
    ]
);

let tone = await arg({ placeholder: "Choose tonality", strict: false }, [
    "default",
    "authoritative",
    "clinical",
    "cold",
    "confident",
    "cynical",
    "emotional",
    "empathetic",
    "formal",
    "friendly",
    "humorous",
    "informal",
    "ironic",
    "optimistic",
    "pessimistic",
    "playful",
    "sarcastic",
    "serious",
    "sympathetic",
    "tentative",
    "caring",
    "casual",
    "cheerful",
    "coarse",
    "conservative",
    "conversational",
    "creative",
    "dry",
    "edgy",
    "enthusiastic",
    "expository",
    "frank",
    "fun",
    "funny",
    "informative",
    "irreverent",
    "journalistic",
    "matteroffact",
    "nostalgic",
    "objective",
    "passionate",
    "poetic",
    "professional",
    "provocative",
    "quirky",
    "respectful",
    "romantic",
    "smart",
    "snarky",
    "subjective",
    "trendy",
    "trustworthy",
    "unapologetic",
    "upbeat",
    "witty",
]);

let input = `Could you please rephrase the following text and use a ${writingStyle} writing style and ${tone} tone? Just answer with your corrected text.
\`\`\`
${selectedText}
\`\`\``;

await startChat({
    prompt: input,
});
    
💻 Setup
Easy
🏷️ Tags
correct text, chatgpt, gpt3, g...

🧰 chatGpt /

ChatGPT Toolkit Settings 🔧

Adjust the settings for the ChatGPT Toolkit.

// Author: Eduard Uffelmann    
// Linkedin: https://www.linkedin.com/in/euffelmann/
// Twitter: @schmedu_
// Website: https://schmedu.com

import "@johnlindquist/kit";
import { changeSettings } from "../lib/settings";

await changeSettings();
    
💻 Setup
Easy
🏷️ Tags
settings, api keys, dataforseo

🧰 chatGpt /

Summarize Text With ChatGpt 🔧

Summarize the selected text with ChatGpt.

// Author: Eduard Uffelmann    
// Linkedin: https://www.linkedin.com/in/euffelmann/
// Twitter: @schmedu_
// Website: https://schmedu.com

import "@johnlindquist/kit";
import { startChat } from "../lib/common";

let selectedText = await getSelectedText();

let task = `Could you please summarize the following text. Just answer with the summary.
\`\`\`
${selectedText}
\`\`\``;

await startChat({
    prompt: task,
    model: "gpt-3.5-turbo",
    temperature: 1,
    runPromptImmediately: true,
});
    
💻 Setup
Easy
🏷️ Tags
summarize text, chatgpt, gpt3,...

🧰 chatGpt /

Typescript Code 🔧

Coding helper that gives you code examples in type... (Read more)

// Author: Eduard Uffelmann    
// Linkedin: https://www.linkedin.com/in/euffelmann/
// Twitter: @schmedu_
// Website: https://schmedu.com

import "@johnlindquist/kit";
import { startChat } from "../lib/common";

await startChat({
    model: "gpt-3.5-turbo",
    systemMessage: `You are a proficient software developer who is specialized in Typescript. Please help me with the following and always give code examples in typescript. Always prefer to write code with async/await promises instead of callbacks.`,
});
    
💻 Setup
Easy
🏷️ Tags
typescript, chatgpt, gpt3, gpt...

Pricing

One Time Purchase - Unlimited Usage.

There is no subscription. You get the access to the full code and can adjust it to your needs.

ChatGPT Toolkit Solo

$9,99
  • 1 macOS Devices
  • BYO API Key
  • Source Code Access
  • Create Own Tools
  • Plugins (Webbrowser, Google Search*, Python, Bash, Calendar, more to come..)
Buy Now

ChatGPT Toolkit

$14,99
  • 3 macOS Devices
  • BYO API Key
  • Source Code Access
  • Create Own Tools
  • Plugins (Webbrowser, Google Search*, Python, Bash, Calendar, more to come..)
Buy Now

Risk Free 30 Day Money Back Guarantee

If you are not happy with the product, you will get a full refund within 30 days.

Based On Open Source Software.
All tools are based solely on ScripKit, an open source application. You will get the source code and can modify it as you wish.
Adjust the Prompts.
Use custom prompts as needed. You can easily change the prompt, leveraging your own prompting knowledge to get the most out of the tools.
Your Data Stored only on Your Machine.
Your data gets send immediately to OpenAI from your local machine. Your data is never stored somewhere else.
Add Your Own Tools - easy peasy.
You can use the same layout for your own tools and create your own prompts with just a few clicks.
Easily Customizable.
You will receive the scripts as they are, and they can be customized according to your requirements. You can modify the prompt, trigger, output, or expand the functionality.
Use ChatGPT-3.5 or 4.
You are using your own OpenAI API Keys. No worries, there are instructions on how to add the API keys and to make sure to not spend too much money.

Frequently Asked Questions

Get The ChatGPT Toolkit!

Use ChatGPT in every application. Supercharge your workflow with the plugins. Just one shortcut away.