Atlas / MCP servers / fastslack / kernl

kernlBLOCK

mcp/fastslack/kernl

Self-hosted agent teams that do your work — and hand any LLM your real data (tasks, mail, calendar, finance) over MCP. No account, no cloud, nothing leaves your machine.

Verdict
BLOCK
Grade
F
Trust score
28 /100
Exposed tools
200 389r · 210w · 36d
Transport
stdio · streamable-http
License
Apache-2.0
Stars
3
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

Agent teams that do your work — on your own machine.

Kernl is a self-hosted server that hands any LLM your real data — tasks, mail, calendar, finance, contacts — and runs teams of agents that act on it. No account, no cloud, nothing leaves the box.

Install · Watch them work · Why Kernl · MCP integration · Website · Discussions

🎬 Watch them work

A real instance. 59 agents across twelve departments, work landing live. Not a mockup and not a render — that is the /agents-flow view of a running Kernl, and the one-liner below gets you to it.

Read from source at commit fdb936d0bc1fOBSERVED · 2026-10-11
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add extension-sdk --env ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} --env ANTHROPIC_AUTH_TOKEN=${ANTHROPIC_AUTH_TOKEN} --env BRAVE_API_KEY=${BRAVE_API_KEY} --env CINEMA_TMDB_API_KEY=${CINEMA_TMDB_API_KEY} -- npx -y @kernl/extension-sdk
claude-desktop
{
  "mcpServers": {
    "extension-sdk": {
      "command": "npx",
      "args": [
        "-y",
        "@kernl/extension-sdk"
      ],
      "env": {
        "ANTHROPIC_API_KEY": "${ANTHROPIC_API_KEY}",
        "ANTHROPIC_AUTH_TOKEN": "${ANTHROPIC_AUTH_TOKEN}",
        "BRAVE_API_KEY": "${BRAVE_API_KEY}",
        "CINEMA_TMDB_API_KEY": "${CINEMA_TMDB_API_KEY}"
      }
    }
  }
}
03

Exposed tools (200)

389 read · 210 write · 36 destructive. Blast radius: 36 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
Areadd
ArchiverreadArchives inbound emails older than 30 days (status=archived).
AutomationsreadAutomated system checks and alerts (scheduled background jobs).
Closerreadcierra ventas
CommunicationswriteCommunications office: Gmail sync, Contacts sync, Calendar sync, Graph enrichment, and email triage. Serves every other office that needs inbox/CRM data.
Constructoraread
CustomreadMy custom scene
Demoreaduna oficina demo
DevOpsreadPipelines and infra. Subscribed to Incident wire.
DiscordreadDiscord bot for messaging and notifications in servers.
Duplicateread
FlightsreadTravel — flight search & itinerary scouting.
HeuralreadVentas y crecimiento
MarketingreadGenera y publica contenido
MattermostwriteSend notifications via Mattermost incoming webhooks.
MonochromereadPure grayscale aesthetic. Minimal and distraction-free.
Nadiaread
NewsroomreadEditorial team — assignments, fact-checks, copy review.
ReporterreadWrites drafts. Replies on inbox wake.
SREreadReliability engineer. Subscribed to Incident wire.
ScoutreadScout
SlackreadSlack bot with Socket Mode for messaging and notifications.
SupportreadCustomer triage. Subscribed to Incident wire.
TelegramreadTwo-way messaging via Telegram Bot API with voice support.
TestreadA useful skill
TorrentwriteKernel-native channel for magnet-URI fan-out. Agents publish via notifier.send({channel:
WebChatreadBrowser-based chat widget with WebSocket connection.
WhatsAppreadWhatsApp Web messaging via Baileys with media support.
always_failwriteAlways fails — used to trigger abort.
annotatereadannotate by id
boomreadalways errors
briefing_generatereadGenerate a morning briefing with tasks, reminders, events, habits, learning progress, and training summary
calc-implementer-llmreadWrites a tiny shell calculator on demand.
consumeread
create_recordwriteCreate a record (reversible — paired with delete_record).
delete_recorddestructiveDelete a record by id.
demo-officereadDemo workspace for MCP resources
demo_toolreaddemo
echoreadecho back n
engagementsreadOne folder per target (
event_attendance_reportreadGenerate an attendance reliability report for frequent event participants
event_notify_summarywriteGenerate post-event attendance summary to share with the group
event_notify_upcomingwriteFormat notification messages for upcoming events, ready to send via Telegram/WhatsApp/Mattermost
event_pending_rsvpsreadList all upcoming events with pending RSVPs — people who haven
get_current_weatherreadGet the current weather in a given location
hello_say_hireadReturns a greeting.
kernel_agents_add_learningwriteManually add a learning/insight to an agent. High-confidence learnings are injected into the agent
kernel_agents_add_triggerwriteAdd an event trigger or schedule to an agent. Event triggers fire when a matching event occurs. Schedules run periodically. A schedule
kernel_agents_ask_supervisorreadAsk the chief about a doubt you can
kernel_agents_call_meetingreadCall a group meeting with other agents. You (the caller) become the moderator.
kernel_agents_chainwriteCreate a declarative chain between two agents. When the source agent completes, the target agent is automatically triggered.
kernel_agents_createwriteCreate a new autonomous agent definition with system prompt, goal template, tool permissions, and LLM config
kernel_agents_deletedestructiveSoft-delete an agent (sets active=0, preserves history)
kernel_agents_directoryreadView the full office directory — all departments (flows) with their agents, roles, capabilities, and connections. Use this to find agents you can request help from or delegate work to.
kernel_agents_factory_finalizereadFinalize an Agent Factory draft: validate the proposed tools against the real catalog, resolve/create the target office, guard against duplicates, and create the agent INACTIVE (active=0) for human review. Returns the activation command. Use AFTER you
kernel_agents_feedbackwriteRate an agent run and provide feedback. The agent learns from feedback to improve future runs.
kernel_agents_flows_createwriteCreate a new flow (department / office). Returns the new flow id, which you must pass to subsequent kernel_agents_create calls so the agents show up under this office in the 3D view.
kernel_agents_flows_listreadList active flows (offices / departments). Use this before creating a new one to avoid duplicates.
kernel_agents_flows_set_repowritePromote an office (flow) to a host git repo all its agents work in, or revert it. Pass an absolute path to promote; omit/empty path to revert to the kernel workspace home. Agents without their own __cwd_path__ override will use this directory as cwd.
kernel_agents_get_skillsreadList the procedural skills attached to an agent, with descriptions and token estimates.
kernel_agents_historyreadList past runs for an agent
kernel_agents_inboxreadRead an agent
kernel_agents_inbox_ackreadAcknowledge office-inbox letters you have finished handling. Unacknowledged letters are
kernel_agents_invokewriteInvoke another AI agent by its UUID and wait for its result.
kernel_agents_listreadList all agent definitions, optionally filtered by active status
kernel_agents_list_subscriptionsreadList active conversation subscriptions for an agent. Useful before subscribing
kernel_agents_list_triggersreadList event triggers, schedules, and chains for an agent
kernel_agents_memoryreadRead an agent
kernel_agents_post_to_colleaguewriteLeave an async message in another agent
kernel_agents_questions_answerreadChief only. Answer a question in triage: pick one of its options by 0-based
kernel_agents_questions_escalatereadChief only. Hand a question in triage to the human, with a one-line reason they will read.
kernel_agents_questions_triage_listreadChief only. List the office agents
kernel_agents_remove_triggerdestructiveRemove an event trigger or schedule from an agent
kernel_agents_resumewriteResume an interrupted agent run from its last checkpoint (native agents only).
kernel_agents_runwriteManually trigger an agent run with a specific goal. Returns the run result.
kernel_agents_set_skillswriteAttach (or replace) the procedural skills loaded by an agent. Each slug must reference
kernel_agents_statsreadGet performance stats for an agent: success rate, avg tokens, top tools, common errors, learnings
kernel_agents_statuswriteGet the status and step-by-step log of an agent run
kernel_agents_subscribe_conversationreadSubscribe an agent to a conversation. Once subscribed, every new turn in that
kernel_agents_unchaindestructiveRemove a chain between two agents
kernel_agents_unsubscribe_conversationreadCancel a conversation subscription so the agent stops being woken by new turns.
kernel_agents_updatewriteUpdate an agent definition (name, prompt, tools, config, active status)
kernel_agents_workspace_applywriteDeclare what an office
kernel_agents_workspace_getreadShow an office
kernel_api_addwriteRegister a new API in the registry. Provide at minimum name and base_url.
kernel_api_add_categorywriteAdd a new API category.
kernel_api_add_endpointwriteDocument an endpoint for an API.
kernel_api_categoriesreadList all API categories.
kernel_api_deletedestructiveRemove an API from the registry.
kernel_api_discoverreadFind APIs matching an intent or tags. Useful for Universal Research Engine.
kernel_api_endpointsreadList documented endpoints for an API.
kernel_api_getreadGet details of a specific API by ID or slug.
kernel_api_listreadList APIs in the registry with optional filters.
kernel_api_searchreadSearch APIs by name, description, or tags.
kernel_api_seedreadLoad or reload seed data for the API registry.
kernel_api_set_keywriteSet encrypted API key for an API. Keys are stored securely using AES-256-GCM.
kernel_api_statsreadGet statistics about APIs in the registry.
kernel_api_testreadTest API availability by pinging its base URL.
kernel_api_updatewriteUpdate an existing API in the registry.
kernel_attest_identityreadReturn this kernel
kernel_attest_verifyreadVerify a previously-issued attestation receipt against its embedded
kernel_attest_verify_chainreadVerify a plan receipt + its child receipts as one chained audit.
kernel_audit_cost_reportreadToken consumption and cost analysis. Shows which agents burn the most tokens,
kernel_audit_logsreadQuery the agent event log for security analysis.
kernel_boomreadboom
kernel_brain_decayreadMaintenance: pull every learned weight a fraction back toward the 1.0
kernel_brain_feedbackreadRecord a usage signal for a recalled item to teach the brain.
kernel_brain_indexreadIndex (or incrementally refresh) module rows into the unified semantic
kernel_brain_recallreadUnified semantic recall across ALL modules — tasks, notes, contacts,
kernel_brain_statsreadCoverage of the unified space: total items, count per kind, and per-source watermarks.
kernel_chat_analyzewriteRun analytics on the concept graph. Shows top concepts by importance and community structure.
kernel_chat_archivereadArchive a chat episode. In future phases, this also generates a summary embedding.
kernel_chat_conceptsreadList extracted concepts from chat conversations, ordered by gravity (cross-conversation importance).
kernel_chat_contextreadPreview the cognitive context that would be retrieved for a query. Useful for debugging the retrieval pipeline.
kernel_chat_historyreadGet message history for a chat episode.
kernel_chat_listreadList chat episodes, optionally filtered by status.
kernel_chat_messagewriteSend a message in a chat episode and receive the LLM response. The system automatically retrieves relevant context from memory (when available).
kernel_chat_patternsreadView detected temporal and behavioral patterns from chat conversations.
kernel_chat_recallreadReinforce a memory node manually, boosting its strength against decay. Use this to mark a memory as important.
kernel_chat_searchreadFull-text search across all chat messages. Returns matching messages with their episode context.
kernel_chat_startwriteStart a new chat episode (conversation). Returns the episode ID to use with kernel_chat_message.
kernel_cinema_getreadFetch the full metadata for a single archive.org title (description, subjects, runtime, watchlist state, rating, etc.).
kernel_cinema_ingest_runwriteTrigger one ingest pass against the archive.org scrape API right now (same code path as the cron). Useful when the user wants to populate a fresh kernel without waiting 15 min.
kernel_cinema_ingest_statusreadReport on the cinema catalog ingester: total titles, embedding backlog, recent runs per collection, embedder info.
kernel_cinema_listreadList titles from the local cinema catalog (archive.org mirror). Filter by collection, year range, watchlist, and free-text query. Use this for browsing the catalog without semantic search.
kernel_cinema_publisher_trustwriteSet trust level for a subtitle publisher (Nostr pubkey, hex). Affects which subs the player surfaces by default.
kernel_cinema_searchreadSemantic search over the cinema catalog. Returns titles ranked by cosine similarity to the query embedding (multilingual, Spanish-friendly via bge-m3). Use this when the user describes what they want in natural language instead of giving keywords.
kernel_cinema_subs_listreadList subtitles available for a movie: LOCAL (locally generated), FEDERATED (Nostr / archive.org index, may not be downloaded). Set refresh=true to fan-out to providers in real time.
kernel_cinema_watchedreadMark a title as watched (timestamps watched_at) or unmark it.
kernel_cinema_watchlistwriteToggle a title in the watchlist. Idempotent — set
kernel_code_readreadRead a source file from the project (read-only).
kernel_code_runwriteRun a small JS script that can call other kernel tools via
kernel_code_searchreadSearch for a pattern in the project source code (grep).
kernel_comms_add_accountwriteAdd an email account for sending/receiving. Supports Gmail (OAuth) and Resend (API key) providers.
kernel_comms_add_recipientswriteAdd recipients to a draft campaign. Can add by email list or from CRM contacts.
kernel_comms_attachreadAttach a file to a communication draft. Copies the file to ./data/attachments/{comm-id}/. Only works on drafts.
kernel_comms_createwriteCreate a new communication draft. If contact_id is provided, auto-fills recipients from contact email. Supports email, WhatsApp, Mattermost, X, Instagram, and LinkedIn channels.
kernel_comms_create_campaignwriteCreate an email campaign from a template.
kernel_comms_create_templatewriteCreate an email template with {{variable}} placeholders.
kernel_comms_delete_accountdestructiveDelete an email account. Communications linked to this account will be unlinked.
kernel_comms_delete_templatedestructiveDelete an email template.
kernel_comms_enrich_draftreadEnrich an email draft with additional data. The AI will intelligently incorporate
kernel_comms_fetch_emailreadFetch a specific email from Gmail and store it as an inbound communication.
kernel_comms_getreadGet a communication with attachments and linked contact/task details.
kernel_comms_get_campaignwriteGet campaign details with recipient list and send progress.
kernel_comms_get_templatereadGet a template with full content and detected variables.
kernel_comms_listreadList communications with optional filters by channel, status, contact, or task.
kernel_comms_list_accountsreadList all configured email accounts with their provider and default status.
kernel_comms_list_campaignswriteList email campaigns with status and send progress.
kernel_comms_list_templatesreadList email templates, optionally filtered by category.
kernel_comms_preview_templatereadPreview a template rendered with sample data.
kernel_comms_remove_attachmentdestructiveRemove an attachment from a communication.
kernel_comms_search_inboxwriteSearch Gmail inbox using Gmail query syntax. Returns message summaries with sender, subject, date, and snippet.
kernel_comms_test_accountreadProbe an email account
kernel_comms_threadreadView all messages in a communication thread, ordered chronologically.
kernel_comms_updatewriteUpdate a communication draft. Use for progressive composition: add subject, body, recipients, or change status. Only drafts and failed messages can be edited.
kernel_comms_update_accountwriteUpdate an email account
kernel_comms_update_templatewriteUpdate a template
kernel_config_catalogreadList all known configurable settings with their descriptions, types, and categories.
kernel_config_getreadGet the current value of a specific configuration setting by its env-var key
kernel_config_listreadList all kernel configuration settings, optionally filtered by category.
kernel_config_setwriteSet a configuration value. Changes take effect immediately (no restart needed)
kernel_config_set_manywriteSet multiple configuration values at once. Useful when applying a group of
kernel_crm_add_contactwriteAdd (or merge) a contact in the Personal CRM. Idempotent by normalized phone + email — calling twice for the same person enriches the existing row instead of duplicating. Optional
kernel_crm_findreadSearch contacts by name, email, company, or notes. Fuzzy matching.
kernel_crm_get_contactreadGet detailed info about a contact including recent interactions.
kernel_crm_leadsreadQuery the CRM lead pipeline — contacts whose
kernel_crm_list_contactsreadList all contacts, optionally filtered by relationship type.
kernel_crm_log_interactionreadLog an interaction with a contact (email, call, meeting, message, social). Updates last_interaction and Neo4j graph.
kernel_crm_search_contactsreadSearch the address book for contacts by name or email.
kernel_crm_set_do_not_contactwriteMark a contact as
kernel_crm_set_lead_statuswriteMove a lead through the pipeline:
kernel_dashboard_eveningreadEvening review: what was completed today, what
kernel_dashboard_morningreadMorning briefing: today
kernel_dashboard_weeklyreadWeekly planning summary: tasks completed this week, open items, upcoming deadlines, contact activity.
kernel_digest_previewreadPreview a daily digest without sending it. kind=evening → tomorrow
kernel_digest_send_nowwriteBuild and immediately deliver a digest to the configured channels (Telegram/WhatsApp) plus the dashboard. kind=evening (tomorrow) or morning (today).
kernel_email_analyzereadAnalyze a fetched email (by comm_id) using AI and extract actionable suggestions (tasks, reminders, contacts, shopping items). Suggestions require approval before being created.
kernel_email_approvewriteApprove a pending email suggestion and immediately create the corresponding entity (task, reminder, contact, or shopping item). Optionally override fields before creating.
kernel_email_classifyreadStamp provenance / importance / action_required / stakeholder / topic_tags on an inbound email.
kernel_email_dismissreadDismiss a pending email suggestion without creating anything.
kernel_email_draftsreadList your unsent email drafts, newest first. Filterable by contact, task, or account.
kernel_email_fetchreadFetch one Gmail message by id and persist it as an inbound Communication. Idempotent — re-fetching the same id returns the existing record.
kernel_email_inbox_recentreadList recent INBOUND emails already stored in the kernel (e.g. fetched via
kernel_email_pendingreadList all pending email analysis suggestions awaiting approval. Returns suggestions with their IDs for use with kernel_email_approve or kernel_email_dismiss.
kernel_email_searchreadSearch Gmail inbox. Returns structured message summaries (gmail_id, from, from_address, subject, snippet, labels).
kernel_email_sendwrite
kernel_email_sync_analyzewriteFetch recent emails from Gmail inbox and run AI analysis to extract actionable suggestions. Call kernel_email_pending afterwards to review.
kernel_email_threadreadReturn every Communication in a thread, chronologically. Use this when you need full conversation context before composing a reply. Reply to
kernel_event_attentionreadWhat needs your attention RIGHT NOW: events that aren
kernel_event_lifecyclereadUnified verb for event lifecycle: open / cancel / complete / duplicate. Replaces the four
kernel_event_rsvp_summaryreadFull RSVP picture for one event: typed attendees[] + pending[] + the attendance summary.
kernel_event_schedulewriteCreate an event and invite contacts in ONE call. Replaces the legacy create→invite_contacts
kernel_event_todayreadReturn every event that starts today (the kernel
kernel_event_upcomingreadEvents scheduled within the next N days (default 7). Skips past and cancelled events.
kernel_events_attendeesreadList all attendees for an event grouped by RSVP status.
kernel_events_cancelreadCancel an event.
kernel_events_completereadMark event as completed and get final summary with attendance stats and costs.
kernel_events_contact_historyreadGet a contact
kernel_events_createwriteCreate a new event (e.g., futbol 5, dinner, meeting). Set min/max_attendees to enforce group size requirements.
04

Trust audit

BLOCKgrade F · trust 28/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryFAIL
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (18 observation(s))
Network
declared (15 observation(s))
Shell
declared (9 observation(s))
Dependencies
not all pinned
Secrets in source
found

Findings (25)

CRITICALPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
<tool:kernel_youtube_add_account>:1
Add a YouTube channel. Requires OAuth credentials: client_id, client_secret (Google Cloud project), and refresh_token. Run the OAuth dance manually once at https://developers.google.com/oauthplaygroun
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
HIGHInventory / provenance · inv.suspicious_name · CWE-1104
packaging/stage-payload.sh
stage-payload.sh
Why it matters. member named after an attack tool
Fix. remove or justify
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
services/kernel/assets/extensions/agents/agent-advanced/_module/claude-code-executor.ts:1210
log.warn(`claude_code auto-eval (failed-path) failed for run ${run.id}: ${e instanceof Error ? e.message : String(e)}`);
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
services/kernel/assets/extensions/security/security/_module/scanner.ts:116
title: "Use of eval() — dynamic code execution",
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
services/kernel/assets/extensions/security/security/_module/scanner.ts:123
title: "Use of new Function() — dynamic code execution",
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
services/kernel/assets/extensions/security/security/_module/scanner.ts:145
title: "exec()/execSync() with string arg (command injection risk)",
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
services/kernel/src/sdk/prompt-sanitizer.ts:77
/(?:send|mand[áa]|envi[áa]|upload|forward)[^\n.]{0,50}(?:~\/\.\w|\.env\b|id_rsa|\/etc\/(?:passwd|shadow))/i,
Why it matters. touches a credential store
HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
services/kernel/src/sdk/protected-files.ts:59
"/.ssh/",
Why it matters. touches a credential store
HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
services/kernel/src/sdk/protected-files.ts:60
"/.aws/",
Why it matters. touches a credential store
HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
services/kernel/src/sdk/protected-files.ts:61
"/.gnupg/",
Why it matters. touches a credential store
HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
services/kernel/src/sdk/protected-files.ts:67
"id_rsa", "id_ed25519", "id_ecdsa", "id_dsa",
Why it matters. touches a credential store
HIGHNetwork egress · net.env_exfil · CWE-200, CWE-319
services/kernel/scripts/google-auth-oneshot.py:31
".env" ... urllib.request
Why it matters. reads secrets in the same file that sends data out
HIGHNetwork egress · net.tls_off · CWE-200, CWE-319
services/kernel/assets/extensions/channels/irc/_module/irc-transport.ts:146
{ cert: creds.cert, key: creds.key, requestCert: true, rejectUnauthorized: false, minVersion: "TLSv1.2" },
Why it matters. certificate verification is disabled
Fix. leave verification on
HIGHObfuscation / stealth · obf.rtl_override · CWE-506, CWE-94
services/kernel/src/sdk/external-content.ts:21
const INVISIBLE = /[͏----\u{E0000}-\u{E007F}]/gu;
MEDIUMInventory / provenance · inv.binary · CWE-1104
services/dashboard/static/office3d/models/Chandelier_02.glb
Chandelier_02.glb
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
services/dashboard/static/office3d/models/brass_vase_01.glb
brass_vase_01.glb
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
services/dashboard/static/office3d/models/coffee_table_round_01.glb
coffee_table_round_01.glb
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
services/dashboard/static/office3d/models/marble_bust_01.glb
marble_bust_01.glb
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
services/dashboard/static/office3d/models/potted_plant_02.glb
potted_plant_02.glb
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInsecure crypto · crypto.weak_random · CWE-327, CWE-338
services/kernel/assets/extensions/security/security/_module/scanner.ts:132
// Heuristic: Math.random() in same line as crypto/token/uuid/secret words.
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
services/dashboard/src/routes/agents-flow/office3d/construction/demolition-stage.ts:420
if (t.beacon) t.beacon.rotation.y += dt * 9;
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
services/dashboard/src/routes/agents-flow/office3d/construction/stage.ts:289
if (truck.beacon) truck.beacon.rotation.y += dt * 9;
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
services/dashboard/src/routes/agents-flow/office3d/construction/vehicles.ts:16
beacon?: any;
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
services/dashboard/src/routes/agents-flow/office3d/construction/vehicles.ts:71
const beacon = new T.Group();
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
services/dashboard/src/routes/agents-flow/office3d/construction/vehicles.ts:72
beacon.position.set(-2.25, 2.5, 0);

Gates applied: critical_finding, no_behavioural_pass, undeclared_transfer.

Audited 2026-10-11 · audit v0.4.1 · source sha fdb936d0bc1ffull audit observations/trust-audit/mcp-server/fastslack__kernl.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-11fdb936d0bc1fBLOCKF28first audit
06

Questions

What is the kernl MCP server?

Self-hosted agent teams that do your work — and hand any LLM your real data (tasks, mail, calendar, finance) over MCP. No account, no cloud, nothing leaves your machine.

What tools does kernl expose?

200 in total: 389 read-only, 210 that write, and 36 that can delete or overwrite (delete_record, kernel_agents_delete, kernel_agents_remove_trigger, kernel_agents_unchain, kernel_api_delete). Every one is listed on this page with its risk.

Is kernl safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (28/100) and found 14 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 36 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does kernl need?

It reads ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN, BRAVE_API_KEY, CINEMA_TMDB_API_KEY, CLAUDE_CODE_OAUTH_TOKEN, COMMS_INBOUND_TOKEN, DISCORD_BOT_TOKEN, FS_COMMANDER_KEY, GOOGLE_CLIENT_SECRET, GOOGLE_CSE_KEY, GOOGLE_PLACES_API_KEY and GROK_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does kernl run?

It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as @kernl/extension-sdk.

How current is this page?

The grade is for one exact copy of the source (fdb936d0bc1f), read on 2026-10-11. The repository is watched and re-audited when it changes.

Advertisement