Features & Capabilities
Adjutant has a lot of functionality that isn't immediately obvious from the UI. This page documents the features worth knowing about — the ones that make the difference between a capable assistant and one that can truly run on autopilot.
Talking to Your Assistant
Ways to send work to your assistant beyond typing in the directive bar.
Directive Templates
Save frequently-used directives as one-click chips that appear below the input bar. Useful for recurring workflows you'd otherwise retype every time.
- Click the
+icon below the directive input bar to create a template. - Give it a short label (e.g.
Weekly summary) and paste the full directive text. - Click the chip to populate the input bar — edit before sending if needed.
- Templates are stored per-product in the database, not just your browser.
Session Management
Each product can have multiple named chat sessions with completely isolated message histories. Useful for keeping a "General" session separate from a "Campaign Planning" one.
- Sessions appear in the left sidebar under the product name.
- Click
+ New sessionto create one with a custom name. - Switching sessions shows a different message history — context is fully separate.
- New products start with a single "General" session automatically.
File & Image Attachments
Attach files directly to a directive. Your assistant processes them inline — no need to describe the contents manually.
- Click the paperclip icon in the directive bar and select a file.
- Images (PNG, JPG, etc.) — analyzed visually by the agent.
- PDFs — read and reasoned over inline.
- Text files — content prepended to your directive as context.
- Videos — referenced by filename; describe what you need from it.
Telegram as a Second Interface
Connect a Telegram bot to send directives and approve review items from your phone — without opening the web UI.
- Create a Telegram bot via
@BotFatherand copy the token. - Get your Telegram chat ID (send a message to the bot, then call the Telegram API to retrieve it).
- Set
TELEGRAM_BOT_TOKENandTELEGRAM_CHAT_IDin Settings → Remote Access. - Messages you send to the bot are queued as directives to the global agent.
- Review items can be approved or skipped by replying to the bot's callback buttons.
- Your assistant can send files back to you via Telegram using the
send_telegram_filetool.
dispatch_to_product tool.Autonomy & Scheduling
Controls for how much your assistant acts on its own, and when.
Autonomy Tiers
Each product has a configurable autonomy level that controls whether actions are held for your approval before executing.
- Go to Settings → Autonomy for the product.
- Approve — every reviewable action pauses and waits for your explicit approval. Safest.
- Window — actions are queued with a countdown (e.g. 10 minutes). If you don't block them, they execute automatically when the window expires.
- Auto — actions execute immediately, no review. Fastest.
- You can set a master override that applies to all action types, or configure each action type individually.
Workstream Scheduling
Workstreams with a mission and a schedule run their own agent loops automatically, without any directive from you.
- Give a workstream a mission (what it should do each run) and a schedule (when to run).
- Supported schedule formats (natural language):
hourly
daily
daily at 9am
weekdays
weekdays at 2pm
every Monday at 9am
every 30 minutes
twice daily
manual
- Use
manualto disable automatic runs while keeping the mission intact. - The scheduler checks every 60 seconds; concurrent runs of the same workstream are prevented automatically.
Autonomous Objective Loops
Objectives can be set to run themselves on a recurring basis — your assistant picks up where it left off automatically.
- Tell your assistant: "Set the [objective name] objective to autonomous mode."
- The assistant calls
set_objective_autonomousand schedules the first run. - After each run, the assistant schedules the next one via
schedule_next_run. - To disable: "Turn off autonomous mode for [objective name]."
Social Post Scheduling
Social posts can be queued for future publication rather than posted immediately.
- Tell your assistant to schedule a post: "Draft a LinkedIn post about X and schedule it for tomorrow at 10am."
- The assistant passes a
scheduled_fortimestamp (ISO 8601) todraft_social_post. - The post sits in "scheduled" status and publishes automatically when the time arrives.
- The scheduler checks every 60 seconds.
Auto-Approval Windows
In Window autonomy mode, review items have a countdown. Items not manually actioned before the deadline approve themselves.
- Set a product's autonomy tier to Window in Settings → Autonomy.
- Configure the window duration in minutes (e.g. 10 minutes, 60 minutes).
- When an action creates a review item, the countdown starts immediately.
- You can manually approve or skip at any time before the deadline.
- If you do nothing, the item auto-approves when the window expires.
MCP & Capability Overrides
Connect external tools to your assistant and replace built-in capabilities with your own.
Installing MCP Servers via Directive
You can tell your assistant to integrate an MCP server in plain language — it handles registration and configuration without you touching any config files.
- Find an MCP server you want (e.g. a CRM tool, a database connector, a custom API wrapper).
- Tell your assistant: "Integrate the [server name] MCP server. Here's the connection info: [details]."
- The assistant registers the server, stores it in the database, and makes its tools available immediately.
- You can also manage MCP servers manually in Settings → MCP Servers.
Capability Slots
Capability slots are named positions in the agent's tool set that can be filled by different implementations. Think of them as swappable tool sockets.
- Built-in system slots:
email_send,social_post,browser_task, and others. - Create custom slots for capabilities unique to your workflow (e.g.
crm_contacts,invoice_create). - Manage slots in Settings → MCP Servers → Capability Overrides.
- Or via directive: "Create a capability slot called crm_contacts."
Overriding Built-in Tools
Once an MCP server is connected, you can assign one of its tools to a capability slot. The assistant will use your tool instead of the built-in equivalent.
- Go to Settings → MCP Servers → Capability Overrides.
- Select a capability slot (e.g.
email_send) and choose an MCP tool to fill it. - Or via directive: "Override the email_send slot with the [MCP tool name] tool from [server name]."
- The override takes effect immediately — the agent routes all matching actions through your tool.
Agent Tools & Skills
Your assistant can expand its own capabilities at runtime.
Installing Skills via Directive
Your assistant can discover and install skill packages that add new tools and capabilities without a restart.
- Tell your assistant: "Find and install a skill for [capability]."
- The assistant calls
find_skillto search available packages andinstall_skillto install the chosen one. - Skills are loaded from the
extensions/directory and activate immediately. - Disabled skills are tracked in
extensions/_config.json.
Scaffolding Custom Tools
Your assistant can write a new Python tool from scratch, save it, and start using it — all in one go.
- Tell your assistant: "Add a tool that [does X]."
- The assistant calls
add_agent_tool, which scaffolds a Python module with aTOOL_DEFINITIONschema and anexecute()function. - The file is saved to
extensions/and loaded immediately. - If a restart is needed, the assistant can call
restart_serverto force a reload.
Sub-Agent Types
When you ask your assistant to delegate a task, it routes to a specialized sub-agent based on what kind of work is needed.
- Delegation happens automatically — your assistant decides which agent to use.
- Research Agent — web search, competitive analysis, information gathering.
- General Agent — file access, local operations, skill installation, broader tasks.
- Email Agent — Gmail operations, drafting, sending, and reading email.
- Each agent type can be configured to use a different Claude model in Settings → Agent Model.
Background Automation
Things Adjutant does automatically in the background to keep things running smoothly.
Conversation Compaction
Long-running products automatically summarize older messages to keep context lean and avoid excessive token usage — you never hit a wall.
- When a product's message history exceeds 20 messages, compaction triggers automatically.
- The most recent 10 messages are kept verbatim.
- Earlier messages are summarized into a single "Summary of previous conversation" block injected at the start of context.
- No action required — this happens transparently in the background.
Email Digest
Compile all product activity into a single summary email sent to your Gmail — useful for an end-of-day or weekly rollup.
- Trigger via directive: "Send me a digest of all product activity."
- Or call
POST /api/digestdirectly (e.g. via a cron job or automation). - Requires Gmail OAuth to be connected in Settings → Google OAuth.
- The digest is sent to your configured Gmail address.
Review Queue Behavior
Understanding how the review queue works helps you tune your autonomy settings effectively.
- When your assistant wants to take a reviewable action, it creates a review item and pauses.
- Review items appear in the status strip at the bottom of the UI.
- In Approve mode: the item waits indefinitely for manual approval or skip.
- In Window mode: a countdown timer appears on the item; it auto-approves when it expires.
- In Auto mode: the item is approved immediately and doesn't appear in the queue.
- The background scheduler checks every 60 seconds for expired Window items.
Product Bootstrap
On first setup, Adjutant can automatically generate a relevant set of workstreams and objectives for a new product based on its name and description.
- Set the following environment variables before starting Adjutant for the first time:
ADJUTANT_SEED_PRODUCT_NAME="Acme Corp"
ADJUTANT_SEED_PRODUCT_DESC="B2B SaaS for invoice automation"
- On startup, Claude generates 3–5 contextually relevant workstreams and 2–3 objectives.
- Bootstrap only runs once — it exits immediately if workstreams already exist.
- You can also trigger this manually via the Product Wizard in Settings → Objectives.
Configuration
Settings that shape how your assistant behaves at a fundamental level.
Brand Voice in Prompts
Everything you fill in under Settings → Overview is injected directly into your assistant's system prompt and shapes every piece of content it generates.
- Go to Settings → Overview for the product.
- Fill in: brand voice, tone, writing style, target audience, social handles, hashtags, brand notes.
- These fields are read from the database and prepended to the agent's system prompt at runtime.
- Your assistant will apply this voice automatically to social posts, emails, and other content — without being told to every time.
Per-Product Model Selection
The main agent and each sub-agent type can be configured to use different Claude models independently.
- Go to Settings → Agent Model.
- Configure the main agent model (used for all directive processing).
- Configure sub-agent models separately: Research, General, and Email agents can each use a different model.
- Use a faster/cheaper model for high-volume sub-agents (e.g. research) and a more capable model for the main agent.
Image Generation
Your assistant can source images for social posts automatically — either from stock photography or AI-generated art.
- Go to Settings → Image Generation to configure sources.
- Pexels — free stock photos. Get a free API key at pexels.com/api and add it to settings. Your assistant calls
search_stock_phototo find relevant images. - DALL-E 3 — AI-generated images via your OpenAI account. Connect via Codex OAuth in settings. Your assistant calls
generate_imagewith a prompt. - Your assistant chooses automatically: Pexels for real-world/documentary content, DALL-E for abstract, branded, or stylized visuals.
Browser Credentials
Store login credentials for platforms your assistant automates via browser. These are injected automatically into browser tasks so the agent can log in without prompting you.
- Go to Settings → Connections and add credentials for a platform (e.g. Twitter/X, LinkedIn).
- When your assistant runs a browser task for that platform, it retrieves and uses the stored credentials.
- Falls back to OAuth API if available, then to an unauthenticated browser session if neither is configured.