Local-first n8n alternative in a single Go binary
β visual workflows, CLI, human-in-the-loop.
What is Mono Agent?
Mono Agent is a local-first automation platform for humans and AI agents:
Project status: pre-1.0, single maintainer. Core workflow engine and node set are exercised by CI (go test ./...), but expect breaking changes between minor versions until 1.0.
- π DAG workflow engine β 90 built-in node types (150 with the optional social build): services (GitHub, Google Sheets / Gmail / Drive, Stripe, Salesforce, HubSpot, Jira, Linear, Notion, Airtable), databases, HTTP, data transforms, and comms (Gmail, Outlook, Slack, Telegram, Discord, and more)
- π¦ Single static Go binary β zero CGO, SQLite embedded, no Docker, no Node.js runtime, no telemetry. All data stays on your machine (crash reports default to local files β see SECURITY.md)
- π₯οΈ Three ways to drive it β a visual canvas editor (Wails desktop GUI), a 70+-command CLI with JSON output everywhere, and a built-in MCP server so AI agents can operate it safely
- π€ Human-in-the-loop as a platform primitive β pause any workflow for review, edit the payload, then approve or reject; the queue is durable and survives restarts
- π Browser automation where no practical API exists β drive your own logged-in Chrome via the bundled extension bridge, publishing to and reading your own accounts (same model as consumer RPA tools)
- π£ Social platform nodes (Instagram, LinkedIn, X, TikTok, Hacker News, Product Hunt) are an opt-in compile-time build (
-tags social) for managing your own accounts β see Usage Policy
Think of it as an honest, self-hosted n8n you can carry in a single file β with human approval gates and first-class agent access built in.
Scope & fair use
Mono Agent is a general automation tool. The social/browser nodes exist to publish to and read your own accounts, not to mass-message, spam, or manipulate anyone.
- Own accounts only β actions run against sessions and credentials you personally control
- Approval gates β drop a
core.human_in_loop node before any sensitive step so a human reviews (and can edit) what goes out
- Platform terms apply β automating your own account may still be subject to the platform's Terms of Service; that's between you and the platform
- Read the full policy β docs/USAGE_POLICY.md
Mono Agent is an independent, unofficial, MIT-licensed project. It is not affiliated with, endorsed by, or connected to any of the platforms it can talk to.
Quick Start
# Build the CLI (Go 1.25+, no CGO)
git clone https://github.com/monoes/mono-agent.git
cd mono-agent
go build -o monoagentcli ./cmd/monoagentcli
# Orientation
./monoagentcli version
./monoagentcli ref # built-in offline docs: commands, nodes, expressions
./monoagentcli node list # all 90 node types
# Try the flagship example workflow (prints the new workflow id)
./monoagentcli workflow templates list
./monoagentcli workflow import --file examples/morning-briefing.json
./monoagentcli workflow activate <id> # enable its triggers
./monoagentcli workflow run <id> # run it now
# Note: the full flagship run needs an OpenRouter API key (`connect openrouter`) β without one it fails cleanly at the summarize step.
# Run the scheduler daemon (keeps cron/webhook triggers alive)
./monoagentcli daemon
Prefer a one-line install? See install.sh or Docker.
Flagship example β "Morning Briefing"
Every weekday at 7am: read your favorite feeds, filter for AI news, summarize with an LLM, pause for a human to edit the summary, then email it to you.
[trigger.schedule: 0 0 7 * * 1-5]
β
βΌ
[system.rss_read] β fetch items from an RSS/Atom feed
β
βΌ
[core.filter] β keep items matching a condition
β
βΌ
[service.openrouter] β generate_text: summarize titles into a brief
β
βΌ
[core.human_in_loop] β PAUSE β you review & edit the draft
β Approve β continue | Reject β drop
βΌ
[comm.email_send] β email the approved digest to you
{
"name": "Morning Briefing",
"nodes": [
{ "id": "t1", "type": "trigger.schedule", "config": { "cron": "0 0 7 * * 1-5" } },
{ "id": "n1", "type": "system.rss_read", "config": { "url": "https://example.com/feed.xml", "limit": 25 } },
{ "id": "n2", "type": "core.filter", "config": { "condition": "{{item.title}} contains ai" } },
{ "id": "n3", "type": "service.openrouter", "config": {
"operation": "generate_text", "model": "anthropic/claude-3-haiku",
"prompt": "Summarize these headlines into a 5-bullet briefing:\n{{item.title}}", "credential_id": "YOUR_OR_CRED" } },
{ "id": "n4", "type": "core.human_in_loop", "config": {
"readonly_fields": ["title", "link"],
"editable_fields": ["summary"],
"timeout_minutes": 120 } },
{ "id": "n5", "type": "comm.email_send", "config": {
"to": "you@example.com", "subject": "Morning Briefing",
"body": "{{item.summary}}", "credential_id": "YOUR_SMTP_CRED" } }
],
"connections": [
{ "source": "t1", "target": "n1" }, { "source": "n1", "target": "n2" },
{ "source": "n2", "target": "n3" }, { "source": "n3", "target": "n4" },
{ "source": "n4", "target": "n5" }
]
}
More ready-to-run workflows (RSSβAIβemail, SheetsβGmail, StripeβSheets sync, GitHubβLinear, and more) live in examples/.
Feature Highlights
π Workflow Engine
- DAG execution with cycle detection (Kahn topological sort)
- Template expressions
{{variable.path}} β dot notation, array indices, fallback chains
- Per-node
on_error semantics: stop, continue, skip, error_branch
- Honest run statuses β partial failures surface as
SUCCESS_WITH_ERRORS, never green
- Webhook, cron, and manual triggers
- Hybrid storage: JSON workflow files + SQLite; full execution history
|
- Drop
core.human_in_loop anywhere to pause for human review
- Durable, DB-backed queue β pending approvals survive restarts
- Edit-before-approve β readonly fields show context; editable fields let the reviewer fix content before it proceeds
- Optional timeout with auto-reject
- Approve via CLI (
hil list / hil approve <id>) or the GUI review panel
|
π€ Multi-Profile Workspaces
- Named workspaces (
default, work, client-a, β¦) with full tenant isolation
- Workflows, connections, people, vault images, HIL items β all scoped per workspace
- Switch with
--profile <name> on any CLI command or via the GUI sidebar
- Running workflows in one workspace are unaffected when you switch to another
|
π Encrypted Secrets Vault
- Secrets stored in your OS keyring (macOS Keychain / Windows Credential Manager / Linux secret service)
- AES-256-GCM envelope encryption (DEK/KEK) for data at rest
- Per-profile vault: each workspace gets its own KEK and vault folder; entries re-encrypt on profile moves
- Encrypted, passphrase-protected portable export (
secret export / secret import)
- One-command migration:
secret encrypt-connections seals legacy plaintext credentials in place
- Manageable from the CLI (
secret) or the GUI Vault page
|
π CRM: People + Communications
- Contact database with tags, notes, and full message history
- Unified inbox across sources (Gmail, Outlook sync built in)
- AI drafts an email β you edit/approve β one-click send (see example below)
people import (JSON), people search, and per-person status timeline
|
πΌοΈ Image Vault
- Every workflow-generated image registered with provenance (which run, which node)
- Reference images in prompts and posts as
{{@img-001}}
- Fullscreen editor β crop, resize, rotate, filters
- AI background removal (U2-Net) plus a full image-processing node set
- Profile-scoped: each workspace sees only its own vault
|
π£ Communication Nodes
- Email:
comm.email_send, Outlook (comm.outlook_read / comm.outlook_send)
- Chat: Slack, Discord, Telegram, WhatsApp, Twilio (SMS)
- Open social protocols: Bluesky, Mastodon, Reddit β via official-style APIs
comm.email_read is currently experimental (requires an IMAP dependency not yet vendored)
|
π€ AI Canvas Chat + Desktop GUI
- Conversational workflow builder: describe the workflow in chat, AI wires the nodes
- Built-in assistant (
monoagentcli chat) with named sessions and explicit opt-in tools (--tools monoagent[,runs]) β tool access is off by default
- OpenRouter (200+ models), HuggingFace, Gemini
- Wails 2 desktop app: canvas editor, HIL review panel, Vault, People, Image Vault
- Dark-themed, keyboard-navigable, fully local
|
π€ Human-in-the-Loop example: email outreach with review
The pattern Mono Agent recommends for any outbound communication β the AI drafts, a human decides. No message leaves the machine until a person approves it.
[service.google_sheets] β read prospect rows (name, company, email)
β
βΌ
[service.openrouter] β generate_text: draft a personalized email
β
βΌ
[core.human_in_loop] β PAUSE β reviewer sees:
β Read-only: name, company, email
β Editable: subject, body
β Approve β continue | Reject β drop item
βΌ
[comm.email_send] β send the approved (possibly edited) email
β
βΌ
[service.google_sheets] β mark row as "sent"
{
"id": "n3",
"type": "core.human_in_loop",
"config": {
"readonly_fields": ["name", "company", "email"],
"editable_fields": ["subject", "body"],
"timeout_minutes": 60
}
}
Approve from the terminal while the workflow waits:
monoagentcli hil list # show pending items
monoagentcli hil approve <id> # resume the workflow
monoagentcli hil reject <id> # drop the item
Node Library
90 built-in node types (+ triggers) in the default build β 150 with the optional social build (below).
βοΈ Core Control (15 nodes)
| Node |
Description |
core.if |
Conditional branching β route items by expression |
core.switch |
Multi-way routing β N output handles |
core.set |
Assign or transform fields on items |
core.filter |
Keep only items matching a predicate |
core.code |
Execute JavaScript (Goja engine) on item stream |
core.merge |
Combine multiple input streams |
core.split_in_batches |
Chunk items into N-size groups |
core.wait |
Pause execution for N seconds |
core.limit |
Keep first N items |
core.sort |
Sort items by key ascending/descending |
core.remove_duplicates |
Deduplicate items by key |
core.compare_datasets |
Diff two item streams |
core.aggregate |
Sum, avg, count, min, max over a field |
core.stop_error |
Halt workflow with a custom error message |
core.human_in_loop |
Pause execution β human reviews, edits, approves or rejects |
π Services (24 nodes)
| Node |
Description |
service.google_sheets |
Read rows, append, update, clear ranges |
service.gmail |
Send and read Gmail messages |
service.google_drive |
File operations on Google Drive |
service.outlook_mail |
Read/send Outlook via Microsoft Graph |
service.openrouter |
Generate text or images via 200+ AI models |
service.huggingface |
HuggingFace inference (text + images) |
service.github |
Issues, PRs, repos, and more |
service.notion |
Pages, databases, blocks |
service.airtable |
Records, bases, fields |
service.linear |
Issues, projects, teams |
service.jira |
Issues, sprints, projects |
service.asana |
Tasks, projects, teams |
service.stripe |
Payments, customers, subscriptions |
service.shopify |
Products, orders, customers |
service.salesforce |
CRM objects and records |
service.hubspot |
Contacts, deals, companies |
service.youtube |
Video and channel data |
service.bluesky |
ATProto β posts and profile data |
service.mastodon |
ActivityPub β toots and timelines |
service.reddit |
Posts, comments, subreddits |
service.devto / service.hashnode / service.producthunt / service.discord |
Dev community platforms |
ποΈ Database (4 nodes)
db.postgres Β· db.mysql Β· db.mongodb Β· db.redis
π HTTP & Network (3 nodes)
http.request Β· http.ftp Β· http.ssh
π§ Data Transformation (8 nodes)
data.datetime Β· data.crypto Β· data.html Β· data.xml Β· data.markdown Β· data.spreadsheet Β· data.compression Β· data.write_binary_file
πΌοΈ Image Processing (7 nodes)
image.info Β· image.resize Β· image.crop Β· image.thumbnail Β· image.convert Β· image.adjust Β· image.remove_background (U2-Net AI)
π£ Communication (12 nodes)
comm.email_send Β· comm.email_read (experimental) Β· comm.outlook_read Β· comm.outlook_send Β· comm.slack Β· comm.discord Β· comm.telegram Β· comm.twilio Β· comm.whatsapp Β· comm.bluesky Β· comm.mastodon Β· comm.reddit
π§ AI, Gemini, System & People (17 nodes)
| Node |
Description |
ai.read_page / ai.extract_page |
AI-assisted page reading and structured extraction |
agent.ask |
Ask an agent runtime a question mid-workflow |
system.execute_command |
Run a local shell command, capture output |
system.rss_read |
Fetch items from RSS / Atom feeds |
people.save |
Upsert a contact into the CRM (profile-scoped) |
people.sync_outlook_message |
Sync an Outlook message into People history |
Also: ai.agent Β· ai.chat Β· ai.classify Β· ai.embed Β· ai.extract Β· ai.transform (LLM utilities), and gemini.chat_session Β· gemini.chat_session_many Β· gemini.generate_image Β· gemini.generate_text (Gemini via your own logged-in browser session β no API key).
β° Triggers (3 types)
| Trigger |
Description |
trigger.schedule |
Cron expression (6 fields: sec min hour dom month dow) β 0 0 9 * * * every day at 9am |
trigger.webhook |
HTTP endpoint β fire workflow on POST |
trigger.manual |
One-click run from CLI or GUI |
π± Social platform actions β opt-in build (-tags social)
Publish to and read your own accounts on these platforms via the Chrome extension bridge. These node types are not compiled into the default binary β build with go build -tags social ./cmd/monoagentcli to include them. They exist for managing your own presence; platform terms apply β see the Usage Policy.
| Platform |
Available actions |
| Instagram |
publish_post Β· like_posts Β· comment_on_posts Β· reply_to_comments Β· like_comments_on_posts Β· send_dms Β· auto_reply_dms Β· follow_users Β· unfollow_users Β· engage_with_posts Β· engage_user_posts Β· find_by_keyword Β· watch_stories Β· export_followers Β· scrape_profile_info Β· extract_post_data Β· list_user_posts Β· list_post_comments |
| LinkedIn |
publish_post Β· like_posts Β· like_comments Β· comment_on_posts Β· send_dms Β· auto_reply_dms Β· engage_with_posts Β· find_by_keyword Β· export_followers Β· scrape_profile_info Β· list_user_posts Β· list_post_comments |
| X (Twitter) |
publish_post Β· engage_with_posts Β· send_dms Β· auto_reply_dms Β· find_by_keyword Β· export_followers Β· scrape_profile_info |
| TikTok |
publish_post Β· like_video Β· comment_on_video Β· like_comment Β· follow_user Β· engage_with_posts Β· find_by_keyword Β· send_dms Β· auto_reply_dms Β· duet_video Β· stitch_video Β· share_video Β· export_followers Β· scrape_profile_info Β· list_user_videos Β· list_video_comments |
| Hacker News |
get_post_metrics Β· list_comments Β· reply_to_comment Β· submit_post |
| Product Hunt |
comment_on_launch Β· get_launch_metrics Β· list_comments |
CLI Reference
The binary is monoagentcli. Most commands accept --json for machine-readable output and --profile <name> to scope to a workspace.
Workflow
β οΈ workflow import runs a JSON file as a program, not as data. Nodes like core.code
(arbitrary JS), system.execute_command (shell), http.ssh, and the db.* nodes execute with
your OS user's privileges. Treat a workflow file from anyone else the way you'd treat an
unreviewed shell script β read it (or workflow validate/get --json it) before importing.
monoagentcli workflow list # list workflows (--json)
monoagentcli workflow get <id> # print a workflow as JSON
monoagentcli workflow create <name> # new blank workflow
monoagentcli workflow import --file flow.json # import (also accepts stdin)
monoagentcli workflow export <id> # export as JSON
monoagentcli workflow validate <id> # validate against node schemas (exit 3 on invalid)
monoagentcli workflow run <id> # run and wait
monoagentcli workflow run <id> --dry-run # validate + print execution plan, no run
monoagentcli workflow run <id> --no-wait # print execution id, exit immediately
monoagentcli workflow run <id> --json # execution record + per-node outputs
monoagentcli workflow run <id> --input '{"key":1}' # inject trigger data
monoagentcli workflow activate <id> # enable triggers
monoagentcli workflow deactivate <id> # disable triggers
monoagentcli workflow executions <id> # run history
monoagentcli workflow search [query] # search workflows & templates
monoagentcli workflow templates list # bundled ready-to-use templates
monoagentcli workflow node add <id> --type core.filter --name Filter
monoagentcli workflow node set <id> <node-id> --config '{"max":5}'
monoagentcli workflow node remove <id> <node-id>
monoagentcli workflow connect <id> --from n1:main --to n2:main
Nodes
monoagentcli node list # all node types (--json)
monoagentcli node schema core.if # JSON schema for a node type
monoagentcli node run http.request \
--config '{"method":"GET","url":"https://httpbin.org/get"}'
Secrets & Connections
monoagentcli secret add --kind secret --name aws \
--field access_key_id=... --field secret_access_key=... # values via flags or stdin
monoagentcli secret list # metadata only β never values
monoagentcli secret get <name> # resolve a vault reference (no plaintext)
monoagentcli secret update <name> / secret rm <name>
monoagentcli secret export # encrypted, passphrase-protected bundle
monoagentcli secret import <file> # restore on another machine
monoagentcli secret encrypt-connections # one-time seal of legacy plaintext creds
monoagentcli login <platform> # browser session login (saved locally)
monoagentcli login status
monoagentcli connect <platform> # add an API credential
monoagentcli connect list / connect test <id> / connect remove <id>
Human-in-the-Loop
monoagentcli hil list # pending review items
monoagentcli hil approve <id> # resume the workflow
monoagentcli hil reject <id> # drop the item (workflow errors out)
People (CRM)
monoagentcli people list # contacts (--json)
monoagentcli people import --file people.json --platform linkedin # JSON array format
monoagentcli people messages list <person-id> # message history
monoagentcli people messages compose <person-id> # AI-assisted draft
monoagentcli people messages send-draft <message-id> # send an approved draft
monoagentcli people status set <person-id> "text" # status timeline
For AI agents
monoagentcli mcp # MCP server over stdio β tools/list, workflow_run, hil_approve, β¦
monoagentcli ref # built-in offline docs: commands, nodes, expressions, examples
monoagentcli ref node core.if # detailed docs for one node type
Full agent documentation: AGENTS.md.
Exit codes
| Code |
Meaning |
0 |
Success |
0 |
Run paused at a human-in-the-loop node β status WAITING (paused for human review); the output carries a hint field pointing at hil list |
1 |
General error (including a run that ends CANCELLED) |
2 |
Not found β e.g. hil approve/hil reject, secret rm/secret update, or workflow delete on an unknown id |
3 |
Invalid input / validation failure |
4 |
Auth or connection failure |
Scheduling
monoagentcli schedule add <action-id> --cron "0 0 9 * * *"
monoagentcli schedule list
monoagentcli daemon # keep all workflow triggers alive; blocks until Ctrl+C
Workflow triggers (trigger.schedule, trigger.webhook) only fire while a process is serving them β run monoagentcli daemon as a persistent background process and activated workflows fire on time, across all profiles.
Chrome Extension
chrome-extension/ lets workflow nodes drive your real, already-logged-in Chrome browser β the same model as consumer RPA tools. No separate automation profile, no re-authenticating for sites (like Google) that invalidate sessions ported into a scripted browser.
- Loopback by default β the bridge server binds loopback, and the extension refuses non-loopback servers. A per-session "Allow non-loopback server (unsafe)" checkbox in the popup overrides this for one save; it is never persisted
- Paired channel β the bridge requires a shared secret (
~/.monoagent/extension.token) as the first frame on every connection; run monoagentcli extension pair and paste the printed token into the extension popup once. An unpaired connection is rejected and can never replace an already-paired one. Run monoagentcli extension reset to revoke and re-pair
- Per-site host permissions β the extension requests site access on demand (via the popup's "Authorize a site" field) rather than holding
<all_urls> by default; grant only the sites your workflows actually target, and revoke from the same popup
- Shared connection β multiple CLI processes share one extension connection instead of fighting over the browser
See docs/security/threat-model.md for the full trust-boundary breakdown.
Install (unpacked, not on the Web Store):
- Open
chrome://extensions
- Enable Developer mode (top-right toggle)
- Click Load unpacked and select the
chrome-extension/ folder (or the zip from the latest release)
No configuration needed. Run any browser node and look for Chrome extension connected -- using your browser in the output. After pulling changes that touch chrome-extension/, reload it from chrome://extensions.
Getting Started
Prerequisites
- Go 1.25+ (
brew install go)
- Chrome/Chromium (for browser nodes β optional for everything else)
- That's it β SQLite is embedded, no external database
Install
git clone https://github.com/monoes/mono-agent.git
cd mono-agent
go build -o monoagentcli ./cmd/monoagentcli
# Or with the social platform nodes (opt-in):
go build -tags social -o monoagentcli ./cmd/monoagentcli
Windows: download monoagentcli-windows-amd64.exe from releases.
Desktop GUI
cd wails-app
go install github.com/wailsapp/wails/v2/cmd/wails@latest
wails dev # development mode
wails build # production build
Profile folders (per-profile vault and data) and the assistant-tools toggle are managed in the GUI's Settings.
Docker
docker compose up -d --build # daemon + persistent /data volume
# Webhook triggers: the server binds 127.0.0.1:9321 by default β
# set the bind address so the published port is reachable:
MONOAGENT_WEBHOOK_ADDR=0.0.0.0:9321 docker compose up -d --build
Browser-based webhook callers additionally need MONOAGENT_WEBHOOK_ALLOWED_ORIGINS (a comma-separated CORS allowlist; unset by default β no CORS headers are sent). See docker-compose.yml and the env-var table in AGENTS.md.
Uninstall & data
All state lives under ~/.monoagent/ (workflows, the SQLite DB, per-profile
credential vaults, browser sessions, and crash reports) and, on macOS/Linux,
in your OS keychain (Keychain Access / Secret Service) for any secrets stored
there instead of the vault. To remove Mono Agent completely:
rm /usr/local/bin/monoagentcli # or wherever you installed it
rm -rf ~/.monoagent # workflows, vault, sessions, crash reports
Then remove the Chrome extension from chrome://extensions, and delete the
monoagent-vault entry from Keychain Access / Secret Service / Windows
Credential Manager manually β that's where the vault's OS-keychain-backed
encryption key lives, and the CLI never deletes it on uninstall since there's
no install hook to run it from.
Personal data: everything Mono Agent stores (contacts, message history,
exported followers, connection credentials) stays in ~/.monoagent/ on your
machine β nothing is sent to us, and there's no telemetry to opt out of.
If you use the people / social nodes to import or export data about other
people, you're the one responsible for having a lawful basis to hold it
(GDPR, CCPA, or your local equivalent) β deleting the profile above purges
it entirely, but nothing is deleted automatically or on a schedule.
Architecture
mono-agent/
βββ cmd/monoagentcli/ # CLI entry point (Cobra)
β βββ workflow.go # workflow subcommands + engine builder
β βββ node.go # node run + registry
β βββ ref.go # built-in offline reference docs
β βββ secret.go # encrypted secrets vault CLI
β βββ hil.go # human-in-the-loop approve/reject
β βββ mcp.go # MCP server for AI agents (stdio)
β βββ ...
β
βββ internal/
β βββ workflow/ # Core workflow engine
β β βββ engine.go # orchestration + profile isolation
β β βββ dag.go # Kahn topological sort, cycle detection
β β βββ execution.go # run state machine, on_error β SUCCESS_WITH_ERRORS
β β βββ expression.go # {{template}} evaluation
β β βββ trigger_manager.go # cron / webhook trigger lifecycle
β β βββ webhook_server.go # loopback webhook HTTP server
β β βββ templates/ # bundled ready-to-use workflows
β β βββ schemas/ # 90+ embedded JSON node schemas
β β
β βββ nodes/ # Node executors
β β βββ control/ # if, filter, set, code, human_in_loopβ¦
β β βββ service/ # google_sheets, openrouter, github, stripeβ¦
β β βββ comm/ # email, slack, telegram, outlook, discordβ¦
β β βββ db/ Β· http/ Β· data/ Β· image/ Β· system/ Β· people/ Β· ai/
β β βββ browser_adapter.go # action.* nodes β opt-in social build
β β
β βββ mcp/ # JSON-RPC 2.0 MCP server (no dependencies)
β βββ secrets/ # keyring + AES-256-GCM envelope encryption
β βββ vault/ # Image Vault β register/resolve/provenance
β βββ connections/ # unified credential storage + OAuth flows
β βββ bot/ # platform browser adapters (build tag: social)
β βββ extension/ # Chrome extension bridge server (loopback :9222)
β βββ ai/chat/ # AI Canvas Chat β conversational builder
β βββ scheduler/ Β· config/ Β· storage/
β
βββ wails-app/ # Desktop GUI (Wails 2 + React)
βββ examples/ # ready-to-run workflow JSONs
βββ docs/ # usage policy, comparison, screenshots
βββ data/actions/ # embedded action definitions
Docs & Resources
| Resource |
What's inside |
| AGENTS.md |
Canonical entrypoint for AI agents: ref, --json, MCP, exit codes |
| docs/USAGE_POLICY.md |
Scope of use, platform ToS, rate caps, anti-spam commitments |
| docs/COMPARISON.md |
Honest comparison vs n8n, Activepieces, Windmill, Node-RED |
| docs/planning/FEATURE_n8n.md |
detailed n8n feature map used as our porting reference |
| examples/ |
Ready-to-run workflow JSONs with webhook trigger examples |
| install.sh |
One-line installer (macOS / Linux) |
| SECURITY.md |
Reporting, supported versions, telemetry & crash-reporting statement |
| CONTRIBUTING.md |
Build/test commands (incl. -tags social), PR guidelines |
| CHANGELOG.md |
Release history |
| docs/screenshots/ |
GUI screenshots |
Tech Stack
Roadmap
Recently shipped
- Multi-profile workspaces β all user data scoped per named profile
- Human-in-Loop node (
core.human_in_loop) β durable, editable, timeout-aware
- Image Vault β storage, labeling, fullscreen editor, provenance
- AI Canvas Chat β conversational workflow builder
- Outlook integration β read and send email via Microsoft Graph
- Encrypted Secrets Vault β OS keyring + AES-256-GCM + portable encrypted export
- MCP server β AI agents can list, run, and validate workflows
- Bluesky/Mastodon publishing nodes (
comm.bluesky, comm.mastodon) β official APIs (ATProto/ActivityPub)
Coming next
- More trigger types β email, file watcher, database change
- Workflow versioning and rollback
- Sub-workflow / reusable workflow node
- Visual debugger β step-through execution in GUI
- Marketplace β shareable workflow templates (curation policy written; distribution plumbing not yet built)
- MCP registry listing + agent tool marketplace
- Metrics dashboard β success rates, throughput, latency per profile
Questions, ideas, and "is this the right tool for X" go to GitHub Discussions β the issue tracker is kept for bugs and well-scoped feature requests. See SUPPORT.md for the full breakdown, and SECURITY.md for reporting vulnerabilities (never in a public issue or Discussion).
Contributing
Pull requests are welcome β see CONTRIBUTING.md. By participating, you agree to keep Mono Agent a fair-use tool.
go test ./... # unit tests (no Chrome needed)
go test -tags "integration,social" ./... # integration tests (requires Chrome)
go vet ./... # lint
License
Mono Agent is released under the MIT License. In plain English:
- β
You may use it, commercially or personally
- β
You may modify it and build your own tools on it
- β
You may distribute copies and modified versions
- β It comes with no warranty β the authors are not liable for anything it does or fails to do
- π Keep the license and copyright notice with any copy you distribute
Mono Agent is in no way affiliated with Instagram, LinkedIn, X, TikTok, or any platform.
Independent, unofficial, MIT-licensed. Use at your own risk and in accordance with each platform's terms.
Made with β by nokhodian