Janbot help · macOS 14+ · Apple Silicon

Get Janbot running, then hand it real work.

Janbot is a native Mac agent that reads your documents, runs commands, searches the web, remembers what matters, and repeats on a schedule. You pick the model, and your data stays on your machine. These pages take you from first install to your first finished task, then cover every control in the app.

new here? start with Getting started → then Chat & the agent

✦ Getting started

Install Janbot

Janbot ships as a single Mac app. There's no account to create and nothing to meter. The public download is paused while we finish entity and EULA work; builds are shared privately with people who request access.

Requirements

WhatYou need
macOSmacOS 14 (Sonoma) or later
HardwareApple Silicon (M1 or newer)
Disk / RAMThe app is ~29 MB. A local model needs more, so check the RAM table. Cloud models need almost nothing locally.
A modelEither a local server (LM Studio, Ollama) or a cloud API key (Claude, OpenRouter, Hugging Face). You pick during onboarding.

Request access

  1. Use Request access to tell us you're interested.
  2. If we share a build with you, open the .dmg and drag Janbot into your Applications folder.
  3. The first time you launch, right-click Janbot.appOpen, then confirm. After that it opens normally.
Private preview

Installer links are not published on this site yet. Preview builds may be unsigned, so macOS may say the app "cannot be verified." Use right-click → Open once (not a double-click) if Gatekeeper prompts you.

Menu-bar app

Janbot lives in your menu bar. Closing the window hides it rather than quitting, so schedules and goals keep running. To have it start automatically, turn on Start Janbot on login in Settings → Agent.

▸ First run

Onboarding, in four steps

The first launch walks you through a short setup and then drops you into your first chat.

Step 1

Welcome

Meet your bot. Private, on your Mac, ready in minutes. Choose Get started.

Step 2

Model setup

Janbot reads your chip and RAM and recommends a local model that fits, with download progress. Continue when it's ready.

Step 3

Workspace

Pick a working directory. This is the sandbox folder for files Janbot creates and edits for you.

Step 4

Done

Finish and land in the main app, ready for your first message.

Cloud-only? Skip the download

If you only plan to use Claude, OpenRouter, or Hugging Face, you don't need a local model. You can move past the local download and add your API key later in Settings → Models.

Send your first message

  1. Type a request in the composer at the bottom. For example: "Summarize the PDF I'm about to drop in and list three action items."
  2. Attach a file with the paperclip, or drag and drop it onto the composer.
  3. Press Enter to send (Shift+Enter makes a new line).
  4. Watch the turn unfold. Thinking, tool calls, and any approval requests all appear inside the reply. See Chat & the agent.

After onboarding, Janbot resumes your latest task chat on restart, so you pick up where you left off.

▣ Chat & the agent

Rounds, not replies

Janbot doesn't just answer. It works. A single message can turn into many rounds of thinking, using a tool, and reading the result, and you see all of it as it happens.

The composer

  • Attachments. Add files with the button, drag-and-drop, or paste. PDF, Excel, Word, PowerPoint, and images are all read natively.
  • Slash commands. Type / to autocomplete a skill (see Skills). This works mid-message, and on Telegram or Slack too.
  • Model. Send with your default model, or pick another enabled slot from the pool.
  • Reason sets how hard the model thinks for this message: Auto / Low / Medium / High / XHigh. Auto scales with the request, while High and above enable deeper thinking. Effort can also escalate on its own if the work looks incomplete.
  • Capabilities is labelled Allowed for this chat. It decides which tool groups and MCP servers this conversation may use. More on it below.
  • Stop halts a run at any time while it's working.

Reading a turn

An assistant turn evolves inside its bubble: thinking, tool calls, approval prompts, and questions all appear there in order (the "turn timeline"). When the run finishes, it collapses to a summary like "Thought for 6s · 9 actions," which you can expand again. Long threads open at the latest turn; scroll up or choose Earlier messages for history.

Replies can include inline images, link previews, and document preview cards. Each response offers Copy, Share, and Retry; your own prompts are selectable and copyable too.

Approvals & questions

When Janbot wants to change your world, whether that's writing a file, editing something, or running a shell command, it pauses and asks inline, batching related calls into one request. Your choices:

  • Allow permits this action (or batch) once.
  • Deny refuses it, and Janbot reads that and takes another path.
  • Allow & trust session auto-approves gated tools until this conversation ends or the app restarts.

Expand any request to see the raw tool arguments. Janbot can also ask you a multiple-choice question mid-run when it needs a decision. Tune what requires approval in Safety.

Capabilities: per-chat policy

The Capabilities picker sets what a single chat is allowed to touch. Built-in tool groups start on; MCP servers inherit your Settings defaults. Switching or reopening a chat resets the picker (the first send on a new draft can preserve your choices). An MCP server that needs sign-in stays disabled until you Connect it in Settings → MCP. Turning a namespace off is a policy choice for that conversation only, so it doesn't change anything globally.

The sidebar

SectionWhat's in it
TasksYour recent chat threads; New task to start one.
ScheduledCron-style agent jobs with their own threads. See Tasks.
GoalsStanding long-term goals the agent checks over time.
ArchivedOlder or manually archived chats, schedules, and goals. Restore them where offered.

Each regular task has rename / archive / delete actions in its header bar. Opening Settings swaps the sidebar for settings navigation with a Back to app link.

◈ Models & providers

Bring whichever mind you like

Janbot runs on local models, cloud models, or a mix. You set one default and can override the model per message. If your default is unreachable, Janbot falls back to other enabled models automatically.

Local vs cloud

ProviderHow you connectNotes
LM StudioLocal server on port 1234Auto-detected
OllamaLocal on port 11434List, pull, and delete models in-app
vLLMLocal on port 8000Auto-detect / Use
llama.cppLocal on port 8080Auto-detect / Use
ClaudeAPI key in Settings → ModelsModels listed from the Anthropic API, with search
Hugging FaceHF tokenInference API
OpenRouterAPI keyRequests set data collection to deny
Custom APIBase URL + optional keyAny OpenAI-compatible endpoint; lists /v1/models, or hand-enter IDs

The model pool & default

In Settings → Models, enable the providers you want and fill up to three model slots. Choose one as your default and Save default. Every chat starts on the default; the composer can override Model and Reason per message. Transient network or rate-limit errors retry automatically, and there's an in-app test you can run without touching your files.

Recommended local models by RAM

RAMModelLM Studio searchollama pull
8 GBQwen3 4B (4-bit)qwen3-4bqwen3:4b
16 GBQwen3 8B (4-bit)qwen3-8bqwen3:8b
32 GBQwen3 30B-A3B (4-bit)qwen3-30b-a3bqwen3:30b-a3b
Hands beat size

A small model that can read your files and run your commands gets more done than a giant that can only talk. An 8 GB Mac is enough to start.

⌘ Workspace

Where your files live, and where Janbot lives

Janbot keeps two things apart: the working directory where it makes files for you, and Application Support where the app keeps its own brain.

Working directory

This is the sandbox folder for deliverables: reports, spreadsheets, and documents Janbot creates or edits on your behalf. You choose it during onboarding (often ~/Janbot-test by default) and can change it in Settings → Agent. It's a blank workspace, not where personality or memory live.

Personality: SOUL & USER

Janbot's behavior and what it knows about you are held in editable personality files (SOUL and USER), reachable from Settings → Agent. Edits to personality are gated behind approval, like any other change to your world. These live under Application Support, not in your working directory.

Two places, on purpose

Deleting a file in your working directory never touches Janbot's memory or settings. Wiping memory never deletes your deliverables. See Privacy & data for the exact paths and the reset options.

◷ Scheduled & goals

Work that runs without you

Some jobs shouldn't wait for you to remember them. Scheduled tasks run on a clock; goals are standing intentions the agent revisits over time.

KindWhat it isCadence
ScheduledA saved prompt that runs on a schedule in its own chat thread. Each run stores the prompt, then the result.every Xm, every Xh, daily HH:MM, weekly DAY HH:MM
GoalA sticky long-term goal; the agent tells you when it'll check in again.No fixed clock; a background worker decides.

The config bar

Open a scheduled task or goal to find its controls on the thread: name and prompt/goal text, enable/pause, Run now, Reasoning effort, a Notify channel to mirror results to Telegram or Slack, and archive. Runs use your default model with the reasoning you set, and show a live Running… state when a background run is active. Add new ones with the + next to Scheduled or Goals in the sidebar.

Keep Janbot running

Scheduled work only fires while the app is running. Since closing the window just hides it, that's usually fine. But if you quit fully, turn on Start Janbot on login so schedules survive a restart.

/ Skills

Slash commands that expand into real work

A skill is a reusable prompt pack. Type / in the composer to autocomplete one; it expands into a richer instruction for the agent.

Bundled skills

CommandWhat it does
/researchDeep web research written to a report file
/summarizeSummarize a URL
/writeWriting help
/rememberStore lasting notes
/wikiNavigate your knowledge wiki
/pdf /docx /xlsx /pptxCreate, read, or edit a specific document format
/officeUmbrella guidance for Office files
/create-skillAuthor a new skill of your own

Managing skills

The Skills curator lives in Settings → Agent. It pins the bundled skills and can archive agent-created skills that have gone unused for 90 days; run it manually with Run curator. Skills you or the agent write are hot-reloadable, so new ones show up in autocomplete right away.

◆ Safety & approvals

It asks before it acts

Janbot has real hands, so it's built to check with you before using them. Approvals and the sandbox are on by default; you decide how much to loosen.

Why the pauses

Anything that changes your machine, like writing or editing files, running shell commands, or editing personality, pauses the run for your inline approval. You can allow once, deny, or Allow & trust session to stop being asked until the conversation ends.

Approval rules

Tune what needs approval in Settings → Safety:

RuleEffect
Auto-approve file writes in working directorySkip the prompt for writes inside your sandbox folder
Auto-approve all file writes (danger)Skip prompts for writes anywhere Janbot can reach
Auto-approve create directoryLet Janbot make folders without asking
Auto-approve all shell commands (danger)Run any shell command without asking
Auto-approve workflow and personality editsLet it manage schedules/goals and edit personality unprompted
Workflow tool calls require approvalKeep a prompt in front of workflow/schedule changes
The danger toggles

"Auto-approve all file writes" and "auto-approve all shell commands" remove the guardrails that keep the agent inside your sandbox. Only enable them when you fully trust the task and know what the agent can reach.

The Seatbelt sandbox

Shell commands run inside macOS Seatbelt, on by default:

  • On. Shell skips the approval pause, but dangerous patterns are still blocked at execution, and the network is denied by default (allowlisted curl/wget can reach out).
  • Off. Janbot falls back to a shell allowlist plus the approval path. The built-in allowlist covers common read-only commands and a few read-only git commands.

Hooks (advanced)

Power users can intercept the agent's actions with hooks. There's no Settings UI for them, so you define them in ~/Library/Application Support/Janbot/agent/hooks.json for events like pre/post tool use, prompt submit, pre-compact, and stop, with actions such as allow, deny, audit log, or redact. See the hooks reference for the full schema.

⇄ Connectors

Reach Janbot from anywhere

Connectors let Janbot talk to the services you already use. Set them up in Settings → Connectors, where each card has a Connect or Manage dialog.

ConnectorWhat it does
TelegramChat with Janbot from your phone using a bot token from @BotFather
SlackIndex channels, optionally reply to DMs/@mentions, and post from your desktop chat
Google WorkspacePick services, then authorize in the browser
Local filesMount folders read-only or read-write

Telegram

  • Two-way, with history saved. Photos you send go to the model; Janbot sends images back with ![alt](path) when the file is under your working directory.
  • Scheduled/goal results can be delivered to Telegram.
  • Rate limit is about 5 messages per 60 seconds per user; it auto-reconnects when a token is saved.

Slack

  • Two modes: interactive (reply to DMs and @mentions) or search-only. You can restrict it to an allowlisted Slack user.
  • An indexer makes channel history searchable; sending a message from the desktop is approval-gated, and the bot must be in the channel.
  • Rate limit is about 5 messages per 60 seconds per channel.

Google Workspace

  • Services: Gmail, Calendar, Drive (read), and Docs & Slides (read/write).
  • You authorize in the browser and grant only the scopes you select; writes stay approval-gated.

Local folders

Mount folders outside your working directory read-only or read-write. Tools respect each mount's permission boundary.

Fewer tools on connectors

When you talk to Janbot through Telegram or Slack, it has a reduced tool set compared to the desktop app.

⧉ MCP

Plug in more tools

MCP (Model Context Protocol) servers add tools from other apps and services: Linear, Spark, your own scripts, and more. Manage them in Settings → MCP.

Add a server

  1. Add a stdio server (a local command) or a Streamable HTTP remote server.
  2. Set any environment variables or auth headers it needs.
  3. For OAuth servers, choose Connect. A browser window handles sign-in, and tokens are stored in Application Support or your Keychain.
  4. Check the server's health and the tools it discovered.
  5. Enable it for a chat from the composer's Capabilities picker.
Approvals still apply

MCP tool calls are approval-gated like everything else, unless you opt a server into auto-approve per server. Turn that on only for servers you trust, since it lets those tools act without asking.

A server that needs OAuth stays disabled in the Capabilities picker until you complete Connect in Settings → MCP. Credentials, tests, approval policy, and editing all stay in Settings, not the chat.

❖ Memory & wiki

It remembers on purpose

With wiki-backed memory on, Janbot turns what it learns into a structured, searchable knowledge base, and the most relevant notes get pulled into new chats automatically.

How it feels

  • Observations are merged into a markdown wiki of linked pages, then indexed for hybrid keyword + vector search.
  • Embeddings run on-device, so nothing is sent away in order to be remembered.
  • Relevant memories and their sources can appear as citations on responses.

Managing memory

Turn Wiki-backed memory on or off in Settings → Agent → Interface. The Memory tab (under Advanced; make it visible from Agent) lets you browse, edit, and delete stored memories and watch the ingest queue. Deleting a wiki entry removes its markdown, so a re-index won't bring it back.

Strict completeness check

Also under Agent → Interface: Strict completeness check runs a gap review before Janbot responds (and a citation check when the web was used). It's skipped automatically on High and above reasoning.

⌀ Privacy & data

What stays on your Mac

Your conversations, settings, memories, wiki, skills, and personality all live on your machine. Data only leaves when you point Janbot at a cloud model or a connector that calls an external service.

Where things live

Everything Janbot knows lives in one file you can open:

~/Library/Application Support/Janbot/janbot.db
LocationHolds
…/Janbot/janbot.dbChats, tasks, settings, memories, stats
…/Janbot/agent/Personality (SOUL, USER), skills, wiki, hooks, context
…/Janbot/runtime/Runtime caches and catalogs
Your working directoryThe files Janbot makes for you (a blank sandbox, not personality)

Secrets are stored in the macOS Keychain in signed release builds (in vault files under Application Support for unsigned/dev builds).

Nothing leaves for inference by default

With a local model from LM Studio or Ollama, a complete agent run makes zero network calls. Inference, memory, and embeddings all happen on your hardware. Data only leaves your Mac when you configure a cloud provider (Claude, Hugging Face, OpenRouter, Custom) or use web/connector tools that call external APIs.

Resetting & wiping

In Settings → Agent → Data management:

ButtonWhat it does
Clear all tasksRemoves chats, scheduled/goal tasks, and context folders
Clear all memoryWipes memories, wiki, stats, workflow runs, and traces, but keeps settings and task definitions
Reset settingsRestores defaults but keeps your data
Factory resetClears everything
Cloud reminder

When you choose a cloud model, your prompts (and attached content) leave your Mac to reach that provider. OpenRouter requests are sent with data collection set to deny, but the prompt still travels. Use a local model for fully on-device runs.

? FAQ & troubleshooting

Common questions

Quick fixes for the things people hit first. If something here doesn't match the app, trust the app, since labels move faster than docs.

Gatekeeper blocks the app

Private preview builds may be unsigned. Right-click Janbot.appOpen (don't double-click) and confirm once. See Install.

No models, or "can't connect"

Is LM Studio or Ollama actually running? Check the ports (1234 for LM Studio, 11434 for Ollama). For cloud, confirm the API key is saved in Settings → Models. Try Auto-detect and the in-app test.

Janbot keeps asking for approval

That's the safety model working. Use Allow & trust session for a run, or loosen specific rules in Settings → Safety. Keep Seatbelt on so shell doesn't need a pause for every command.

Shell can't reach the network

Seatbelt denies network by default. Prefer the web tools for anything online, or carefully adjust the sandbox/allowlist. See Safety.

Capabilities is missing my MCP tools

Complete Connect (OAuth) in Settings → MCP, then enable the server in the chat's Capabilities picker. Calls may still ask for approval. See MCP.

A scheduled task didn't run

Check it's enabled, that the schedule format is valid (daily 09:00, weekly MON 09:00, etc.), and that the app is running. Turn on Start Janbot on login so it survives restarts. See Tasks.

Where are my files?

Deliverables are in your working directory. The app's own data (personality, skills, wiki, database) is under Application Support. See Privacy & data.

Telegram or Slack is silent

Check the token, wait for reconnect, and mind the rate limits (~5 messages/60s). For Slack, confirm the mode (interactive vs search-only), any user allowlist, and that the bot is in the channel. See Connectors.

Memory isn't recalling anything

Make sure Wiki-backed memory is on, open the Memory tab, and check the ingest queue for pending or failed items. See Memory.

Factory reset vs. clear memory?

Clear all memory wipes what Janbot knows but keeps your settings and task definitions. Factory reset clears everything. Full table in Privacy & data.

What's RTK?

An optional tool for token-optimized shell output. If it's installed, Janbot uses it automatically, and there's nothing to configure.