Skip to content

Assistant

The assistant is an in-project chat in the Tefily console. It runs the same executable tool registry as MCP, but over SSE (activity_summary, tool_start, tool_end, title, reply, done, error) rather than the MCP protocol. The full-profile assistant advertises search_tools, invoke_tool, web_search, and web_get (same deferred catalog as MCP); the coding companion lists its native git/workspace tools plus the same web tools. activity_summary is a short sentence for the current tool batch and replaces the previous summary in the UI. Untitled sessions emit title as soon as a short conversation label is generated, in parallel with the first turn.

Sessions and messages: /api/projects/:projectId/assistant/sessions. Sending a message is a streaming POST. The server keeps the turn running if the SSE client or a proxy drops; reopen the chat to load persisted messages. The gateway request timeout for this stream is 2 hours.

A conversation can attach a git-backed workspace. File tools (list_dir, read_file, grep_search, file_search, edit_file, delete_file) inspect and immediately commit to the session work branch. That path is for the assistant workspace, not the data API.

Workspace writes are limited like any other git write: a single file is capped at 5 MiB (413 payload_too_large), a write is refused with 429 quota_exceeded when the project’s repository storage is far over its allowance (or 402 payment_required on a suspended account), and deleting or rejecting changes is always allowed. Deleting a session also deletes its assistant/<id> work branch.

When the user asks to build or implement a feature (multi-file / multi-step work), the assistant must orchestrate through Project management instead of editing in the long parent chat:

  1. begin_build_plan creates an Epic (the plan) plus child Task work items in Project management.
  2. spawn_task_agent runs a nested assistant per child. That worker starts with only the ticket brief (plus what it then researches) and writes to the same conversation work branch.
  3. Nested tool_start / tool_end / activity_summary events include parentCallId so the Working bubble nests live tool rows under the spawn. The parent model only sees the worker’s final summary.

While a plan is active, the parent cannot call edit_file / delete_file / propose_file_changes. get_build_plan and cancel_build_plan read or clear the session lock. spawn_task_agent is in-app only (not MCP).

Agents are a separate console product. Configure agents and review their runs on the agents route. They are not the assistant, and they do not get MCP tools.

Native runtime tools are only list_dir, read_file, write_file, ask_clarification, and finish. search_tools and invoke_tool are not registered. codingRuntime: "cursor" is rejected with “Cursor coding runtime is not implemented yet”.

Plan caps: 0 agents on Free, 5 on Pro, and 25 on Scale. Runs per billing period are 0 / 100 / 1,000. Concurrent runs are 0 / 2 / 5. A run is enqueued against a project-management work item.

POST /api/projects/:projectId/agents
{ "name": "implementer", "gitRepositoryId": "<repo-uuid>", "createBranch": true, "codingRuntime": "native" }
POST /api/projects/:projectId/agents/:agentId/runs
{ "workItemId": "<id>", "lenastProjectId": "<id>" }

Admin SDK AgentsApi: list, get, create, update, delete, listRuns, enqueueRun, getRun, listRunEvents, cancelRun, listRunsForWorkItem. Cancel is POST .../agents/runs/:runId/cancel.

The native runtime calls ASSISTANT_LLM_BASE_URL (default https://api.openai.com/v1) with ASSISTANT_LLM_API_KEY. The model is the agent’s model, or ASSISTANT_LLM_MODEL (default gpt-5.5). A failed HTTP call becomes CodingFailed('LLM request failed'). Agents do not resolve organization or project LLM credentials.

Open Agents, create an agent, and pick the Git repository. Open a work item in Project management and enqueue a run, then open the run for events. Cancel from the run.

Plan fees, AI markup, and agent limits: Pricing.

Use MCP from Cursor when you want tools in your editor. Use the assistant when you are already in the console.

The assistant calls a model with a project LLM credential, otherwise an organization credential, otherwise the platform key (ASSISTANT_LLM_API_KEY). Bring-your-own keys are the LLM credentials on the organization or project. Coding agents do not read those credentials. They use ASSISTANT_LLM_API_KEY and ASSISTANT_LLM_MODEL only. Without a platform key, an agent run fails the LLM request.