Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.tesslate.com/llms.txt

Use this file to discover all available pages before exploring further.

Tesslate OpenSail

What an agent is in OpenSail

An agent in OpenSail is a running tesslate-agent instance, bound to a project workspace, that drives an LLM in a streaming tool-use loop. Every agent is a composition of four things:

A system prompt

The personality, role, and rules of engagement. Co-authored by the creator.

A tool registry

The built-in tool set (33 tools across 8 categories) plus any MCP connectors and view-scoped tools.

A skill catalog

Lightweight skill descriptions injected at session start. Full bodies fetched on demand.

A model preference

A LiteLLM-routed model for each session, with BYOK support and per-tier defaults.
The active agent runner lives in the packages/tesslate-agent submodule and is invoked by the orchestrator worker through tesslate_agent_adapter.py. The agent is model-agnostic, stateless between calls, and streams every step back to the UI as it happens.
For the authoritative, per-tool reference of all 33 built-in tools (parameters, edit-mode gating, return shape, quirks), see the tesslate-agent reference: https://github.com/TesslateAI/tesslate-agent/blob/main/docs/DOCS.md.

Starting a session

1

Open a project

Open any project from your dashboard. The chat panel opens on the right and the agent picks up the project workspace, open files, and git state automatically.
2

Pick an agent

The agent selector at the top of the chat shows every agent installed on your account plus the project’s default. Any agent published to the marketplace that you have installed is available here.
3

Pick an edit mode

The edit-mode toggle controls how much autonomy the agent has: Ask Before Edit (default), Allow All Edits, or Plan Mode. Mode is enforced at the tool registry level, not the system prompt, so every agent respects it.
4

Describe the task

Type in natural language. Reference files by path. Drop in screenshots, error messages, or attached files. The agent reads the project tree, the git status, any TESSLATE.md, and the skill catalog before its first model call.
5

Watch it work

Each tool call streams into the transcript as a separate card: the tool name, arguments, and result. Text the agent emits between tool calls streams inline. The session persists progressively to the database, so you can close the tab and come back later without losing the trajectory.

The conversation pattern

The agent runs an iteration loop until the model stops asking for tool calls:
loop:
  pre-flight compaction if context >= 80% of window
  model.chat_with_tools(messages, tools)
  if response text: stream it
  if no tool calls: emit complete and return
  run tool calls
  append tool results to history
  emit agent_step
You see streamed text, tool cards, and (on context pressure) a compaction marker. When the loop terminates with no more tool calls, you get a complete event and the chat is ready for your next message.

Approval modes

Dangerous tools (file writes, shell commands, web fetch) are gated at the registry level by the active edit mode:
Default and safest. Reads proceed silently. Writes and shell commands pause the agent and show an approval card with Allow Once, Allow All, and Stop. Allow All for write tools flips the session into Allow All Edits; Allow All for shell/web tools persists per tool category only.
Approvals persist only for the current chat session. Clearing the chat or starting a new one resets all Allow All decisions.

Attaching files and context

  • Drag and drop files into the chat input to attach them. Images are viewable by the agent via view_image (supported on vision-capable models).
  • The architecture panel is shared state: nodes and edges you add show up to the agent on its next iteration, and the agent’s graph edits show up on your canvas in real time.
  • Long-running sessions compact older messages automatically when the token estimate crosses 80% of the model’s window. Multi-hour runs do not hit a wall.

Running, interrupting, resuming

Click Stop in the chat input while the agent is working. A cancellation signal is published to the worker, which checks between iterations and stops on the next loop boundary. Partial work is preserved in the transcript.
Agent steps persist to the database as they happen. Close the tab, lose network, or have the worker pod restart: on reconnect the transcript rehydrates from the stored trajectory and the WebSocket resubscribes to the Redis event stream. Any events you missed replay before live streaming picks up.
Every file write is recorded with a prior snapshot. Use file_undo to revert individual files, or use the workspace snapshot timeline to roll the entire project back to any point in the session. Up to 5 snapshots are retained per project.
Agents work best when steered. After a tool card lands, you can interject with a short correction (“use Tailwind, not CSS modules”) without waiting for the iteration to end. The correction lands in the next model turn.

Writing prompts that work

Include the file path, the framework, the expected behavior, and any constraints. “Create src/components/Button.tsx as a React TS component with variant, size, and loading props, using Tailwind” beats “add a button”.

Tool categories at a glance

CategoryWhat the agent uses it for
File operationsRead, write, patch, multi-edit, and undo files in the workspace
Shell commandsOne-off bash_exec, persistent shell_open/shell_exec sessions, background processes, Python REPL
Navigationglob, grep, and list_dir for fast codebase traversal
Gitgit_log, git_blame, git_status, git_diff inside the container
MemoryCross-session scratchpad the agent can read and write
Webweb_fetch, web_search via Tavily, Brave, or DuckDuckGo
PlanningTodos, plan documents, structured updates
DelegationSpawn subagents, wait on them, send messages, close them
For full parameter lists, gating rules, and return shapes, see the tesslate-agent reference.

Troubleshooting

If you are in Ask Before Edit mode, the agent pauses for approval on the first dangerous tool. Check the chat for a pending approval card. You can also widen the approval scope with Allow All for the tool type.
Plan Mode blocks writes and shell commands at the registry. Switch modes with the toggle next to the input. API-key scoping can also restrict tools: see /guides/api-keys for scope details.
The loop terminates when the model stops asking for tools. If it keeps going, cancel, clarify the success criteria, and restart. Consider Plan Mode to force the agent to commit to an approach before executing.
If you hit a credit ceiling mid-task, purchase a credit pack or upgrade your tier. See /guides/billing. BYOK keys (Pro and Ultra) bypass the credit system entirely.

Next steps

Customizing Agents

Build your own agent with a custom system prompt, skills, and MCP bindings

Skills

Package a reusable capability and attach it to any agent

Connectors (MCP)

Wire Slack, Gmail, Linear, and more into your agent’s tool registry

Model Management

Pick the right model, BYOK, or self-host with Ollama or vLLM