Overleaf Remote logo

Overleaf Remote

Community
qinshengqian
overleaf-remote

Install and use the bundled olcli to read, inspect, create, edit, precisely patch, organize, upload to, download from, and compile Overleaf projects without maintaining a local pull/push checkout. Prefer the persistent live session for reading and editing remote documents. Use for Overleaf CLI setup, session-cookie authentication, direct remote file operations, or diagnosing olcli access and synchronization problems.

Overview

Publisherqinshengqian
Repositoryoverleaf-remote-skills
Skill nameoverleaf-remote
Stars
105
Forks
8
Bundled files
25
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 25 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by qinshengqian on GitHub. Read the source before you install it.

Installation

Install the Overleaf Remote AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/qinshengqian/overleaf-remote-skills/tree/main
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/qinshengqian/overleaf-remote-skills.git \
  .claude/skills/overleaf-remote
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Overleaf Remote in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Overleaf Remote on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Overleaf Remote is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Overleaf Remote

Start here: is a live session running?

olcli live is the default interface to a project, for reading as much as for editing. Before anything else, check whether a session already covers the project (olcli-live ls on macOS/Linux, or tmux ls):

  • If one is running, use it for everything. {"op":"ls"} lists the project, {"op":"read","path":...} reads a document, and the edit operations below change it.
  • If none is running, start one before reaching for one-shot commands: olcli live "My Paper", or a tmux window via scripts/run-live.sh so it outlives the terminal. It costs a few seconds and is reused for every later step.

Reach for olcli download only when you need the bytes on local disk: a ZIP, a binary, or compile output.

The session holds each joined document's current text and version, so it answers a read without a download and can tell you whether what you last read is still current. {"op":"stat"} reports whether the local copy is stale, and remoteChanged flags an edit from another connection. A full read is mirrored under ~/.olcli/live/<projectId>/, and {"op":"mirror","intervalMs":1000} keeps it current. The mirror is read-only: never edit those files, and never upload them back; change content only through replace/insert/append.

How edits work

Use the bundled olcli build for direct Overleaf operations. Prefer precise remote commands (replace, insert, append, prepend, write, mkdir, and upload --to) over a bidirectional pull/push checkout. The live mirror is not that: it is one-way and read-only. edit is not a general editor: it only fills an empty document, and write only creates a document or fills an empty one. Whole-document replacement is refused everywhere else, so plan every change as a targeted operation against the document's live content.

olcli live keeps one Overleaf collaboration WebSocket open, joins text documents lazily, and sends small versioned OT insert/delete operations instead of downloading and re-uploading whole files. It tracks collaborator updates and safely rejoins a document after a race. auto mode falls back to verified HTTP replacement only when the failure happened before an OT write was sent; uncertain writes are never retried blindly. Use --transport ot to require OT or --transport http to diagnose compatibility with older self-hosted instances.

An edit reply reports the document's new size, not what changed. olcli-live send closes that gap: when the op changes text it snapshots the document, applies the op, reads it again, and prints a unified diff of the change.

bash
olcli-live send paper '{"op":"replace","path":"main.tex","search":"old","replacement":"new"}'
olcli-live diff paper main.tex

The last pair stays cached, so diff can reprint it after the mirror has moved on. upload and the control ops still print their raw JSON reply, because a binary has nothing to diff.

Hosting the session

On macOS or Linux with tmux, keep the session alive rather than starting a new olcli live for every request: one tmux window per project, started with scripts/run-live.sh (it restarts the session if it exits, since tmux has no restart-on-crash of its own) and driven with scripts/olcli-live send, which waits for each reply. A tmux server is a single per-user process, so several terminals and several agent sessions share one connection. Never drive one window from two writers at once; the replies interleave and you can no longer tell which reply belongs to which operation.

Windows is out of scope for this: both helpers are bash scripts with no PowerShell twin, and the installer deliberately does not place them on PATH. On Windows, start olcli live per request and use the one-shot commands for single edits.

Route the task

  • For anything on a project, start from the live session (see Start here); its operations are in references/commands.md.
  • For first-time installation, authentication, or instructions for obtaining the Overleaf cookie on macOS or Windows, read references/setup-and-cookie.md completely.
  • For project, file, editing, upload, compile, and verification commands, read references/commands.md completely.
  • When authentication, PATH, folder resolution, upload, compilation, or content verification fails, read references/troubleshooting.md completely.

Operating rules

  1. Treat overleaf_session2 as a password. Never echo it, quote it in a report, commit it, place it in the Skill, or expose it in process listings when a hidden prompt is available.
  2. Authentication permits access; it does not by itself authorize creating, editing, deleting, renaming, or compiling a project. Confirm that the user's request covers the intended remote mutation.
  3. Default to the live session, for reads as well as writes (see Start here). Do not read a document with olcli download while a session is running: it wastes a round trip and throws away the session's record of whether that content is current.
  4. Never edit from a stale copy. Compute every change against the document's current remote content. Do not download a file, edit it locally, and upload it back; do not reuse content read earlier in this conversation, in a previous session, or from a local checkout. Re-read first. olcli live follows collaborator updates as they arrive, and the one-shot commands re-read immediately before writing. A base that was not freshly read may already be superseded by someone else's text.
  5. Never replace a whole document unless it is empty. edit, write, and upload --to refuse to overwrite a non-empty text document, because a wholesale write silently discards everything a collaborator added since that content was read. Express the change as targeted operations (replace, insert, append, prepend) instead. Delete and recreate a file only when the user has explicitly asked for a full rewrite.
  6. Resolve the exact project and remote path before mutation. Prefer a project ID when names are ambiguous.
  7. Use replace for an exact, unique change. It refuses multiple matches unless --all is explicit. Use insert with a stable anchor and --occurrence <n> when the anchor repeats.
  8. Use write to create a text document or fill an empty one, mkdir for folders, and upload --to for images, PDFs, bibliographies, archives, or other new files.
  9. Preserve the built-in versioned OT acknowledgement or HTTP read-after-write verification. For binary uploads, download to a temporary file and compare hashes or bytes when correctness matters.
  10. Review what the write actually did. Through a tmux session, olcli-live send prints the unified diff of every text edit; check that diff before moving on. olcli-live diff <window> <path> reprints the last one. Raw {"op":...} lines typed straight into olcli live, and the one-shot commands, print no diff.
  11. Do not start a pull/push daemon unless the user explicitly asks for ongoing synchronization. The direct commands are designed to avoid that workflow.
  12. After repeated authentication failures, ask the user to refresh the cookie; do not keep retrying a possibly expired credential.

Bundled implementation

The modified olcli source and compiled JavaScript live in assets/olcli/. Install it with the platform script in scripts/; do not silently substitute the public npm release because it may not contain this Skill's direct-edit commands.

  • macOS/Linux: bash scripts/install_olcli.sh
  • Windows PowerShell: powershell -ExecutionPolicy Bypass -File scripts/install_olcli.ps1
  • Verify macOS/Linux: bash scripts/check_olcli.sh
  • Verify Windows: powershell -ExecutionPolicy Bypass -File scripts/check_olcli.ps1

When changing the bundled implementation, update both assets/olcli/src/ and assets/olcli/dist/, run the TypeScript build, and validate this Skill before delivery.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Overleaf Remote AI skill do?

Install and use the bundled olcli to read, inspect, create, edit, precisely patch, organize, upload to, download from, and compile Overleaf projects without maintaining a local pull/push checkout. Prefer the persistent live session for reading and editing remote documents. Use for Overleaf CLI setup, session-cookie authentication, direct remote file operations, or diagnosing olcli access and synchronization problems.

Why use Overleaf Remote on TypingMind?

Because you install it once and use it with any model. Overleaf Remote is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Overleaf Remote in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/qinshengqian/overleaf-remote-skills/tree/main. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Overleaf Remote?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Overleaf Remote?

As many as you like. As long as a model supports skills, you can use Overleaf Remote with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Overleaf Remote AI skill free?

Yes. It is published on GitHub by qinshengqian under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇