@prismer/runtime 2.2.55 → 2.2.64
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +574 -0
- package/apc/skills/releasing-test/SKILL.md +9 -0
- package/built-in-skills/agent-coordination/SKILL.md +21 -4
- package/built-in-skills/agent-meta/SKILL.md +11 -0
- package/built-in-skills/assets/SKILL.md +1 -1
- package/built-in-skills/canvas-design/SKILL.md +3 -3
- package/built-in-skills/canvas-design/canvas-fonts/IBMPlexSerif-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/InstrumentSerif-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/LICENSE-SOURCES.md +16 -0
- package/built-in-skills/claim-agent-ownership/SKILL.md +7 -3
- package/built-in-skills/claude-api/SKILL.md +1 -1
- package/built-in-skills/claude-api/python/claude-api/README.md +2 -2
- package/built-in-skills/claude-api/python/claude-api/tool-use.md +9 -5
- package/built-in-skills/claude-api/python/managed-agents/README.md +11 -1
- package/built-in-skills/claude-api/shared/error-codes.md +4 -4
- package/built-in-skills/claude-api/shared/managed-agents-client-patterns.md +4 -2
- package/built-in-skills/claude-api/shared/managed-agents-core.md +1 -2
- package/built-in-skills/claude-api/shared/managed-agents-events.md +41 -22
- package/built-in-skills/claude-api/shared/managed-agents-multiagent.md +5 -3
- package/built-in-skills/claude-api/shared/managed-agents-self-hosted-sandboxes.md +1 -1
- package/built-in-skills/claude-api/shared/managed-agents-tools.md +2 -3
- package/built-in-skills/claude-api/shared/model-migration.md +3 -3
- package/built-in-skills/claude-api/shared/models.md +1 -1
- package/built-in-skills/claude-api/typescript/claude-api/batches.md +1 -1
- package/built-in-skills/claude-api/typescript/claude-api/files-api.md +3 -1
- package/built-in-skills/claude-api/typescript/claude-api/tool-use.md +8 -2
- package/built-in-skills/claude-api/typescript/managed-agents/README.md +8 -2
- package/built-in-skills/codebase-design/SKILL.md +15 -1
- package/built-in-skills/codebase-design/references/requesting-code-review/GUIDE.md +291 -0
- package/built-in-skills/codebase-design/references/requesting-code-review/LICENSE +21 -0
- package/built-in-skills/codebase-design/references/requesting-code-review/LICENSE.superpowers +21 -0
- package/built-in-skills/codebase-design/references/requesting-code-review/NOTICE.md +37 -0
- package/built-in-skills/codebase-design/references/sdlc-review/GUIDE.md +130 -0
- package/built-in-skills/codebase-design/references/sdlc-review/LICENSE +21 -0
- package/built-in-skills/codebase-design/references/sdlc-review/NOTICE.md +17 -0
- package/built-in-skills/codebase-design/references/simplify-code/GUIDE.md +269 -0
- package/built-in-skills/codebase-design/references/simplify-code/LICENSE +21 -0
- package/built-in-skills/codebase-design/references/simplify-code/NOTICE.md +37 -0
- package/built-in-skills/competitor-intelligence/LICENSE +21 -0
- package/built-in-skills/competitor-intelligence/NOTICE.md +6 -0
- package/built-in-skills/competitor-intelligence/SKILL.md +125 -0
- package/built-in-skills/competitor-intelligence/scripts/watch_state.py +160 -0
- package/built-in-skills/conversation-compaction/SKILL.md +3 -0
- package/built-in-skills/council-creator/SKILL.md +4 -3
- package/built-in-skills/diagnosing-bugs/SKILL.md +12 -0
- package/built-in-skills/diagnosing-bugs/references/desktop-dom/GUIDE.md +64 -0
- package/built-in-skills/diagnosing-bugs/references/desktop-dom/LICENSE +21 -0
- package/built-in-skills/diagnosing-bugs/references/desktop-dom/NOTICE.md +17 -0
- package/built-in-skills/diagnosing-bugs/references/systematic-debugging/GUIDE.md +410 -0
- package/built-in-skills/diagnosing-bugs/references/systematic-debugging/LICENSE +21 -0
- package/built-in-skills/diagnosing-bugs/references/systematic-debugging/LICENSE.superpowers +21 -0
- package/built-in-skills/diagnosing-bugs/references/systematic-debugging/NOTICE.md +37 -0
- package/built-in-skills/doc-coauthoring/SKILL.md +6 -0
- package/built-in-skills/doc-coauthoring/references/humanizer/GUIDE.md +647 -0
- package/built-in-skills/doc-coauthoring/references/humanizer/LICENSE +21 -0
- package/built-in-skills/doc-coauthoring/references/humanizer/LICENSE.hermes +21 -0
- package/built-in-skills/doc-coauthoring/references/humanizer/PROVENANCE.md +7 -0
- package/built-in-skills/document-actions/LICENSE +21 -0
- package/built-in-skills/document-actions/NOTICE.md +21 -0
- package/built-in-skills/document-actions/SKILL.md +46 -0
- package/built-in-skills/evidence-citations/LICENSE +21 -0
- package/built-in-skills/evidence-citations/NOTICE.md +21 -0
- package/built-in-skills/evidence-citations/SKILL.md +46 -0
- package/built-in-skills/evidence-citations/references/citation-formats.md +68 -0
- package/built-in-skills/evidence-citations/references/grounding-rationale.md +64 -0
- package/built-in-skills/evidence-citations/scripts/sources.py +720 -0
- package/built-in-skills/frontend-design/SKILL.md +6 -0
- package/built-in-skills/frontend-design/references/claude-design/GUIDE.md +650 -0
- package/built-in-skills/frontend-design/references/claude-design/LICENSE +21 -0
- package/built-in-skills/frontend-design/references/claude-design/LICENSE.hermes +21 -0
- package/built-in-skills/frontend-design/references/claude-design/PROVENANCE.md +7 -0
- package/built-in-skills/image-generate/SKILL.md +5 -0
- package/built-in-skills/image-generate/scripts/generate-and-deliver.mjs +24 -3
- package/built-in-skills/mcp-builder/reference/evaluation.md +11 -2
- package/built-in-skills/mcp-builder/reference/node_mcp_server.md +34 -5
- package/built-in-skills/mcp-builder/reference/python_mcp_server.md +6 -2
- package/built-in-skills/mcp-builder/scripts/connections.py +1 -1
- package/built-in-skills/mcp-builder/scripts/evaluation.py +52 -34
- package/built-in-skills/mcp-builder/scripts/requirements.txt +2 -2
- package/built-in-skills/meeting-actions/LICENSE +21 -0
- package/built-in-skills/meeting-actions/NOTICE.md +21 -0
- package/built-in-skills/meeting-actions/SKILL.md +48 -0
- package/built-in-skills/memory/SKILL.md +27 -3
- package/built-in-skills/memory/references/llm-wiki/GUIDE.md +468 -0
- package/built-in-skills/memory/references/llm-wiki/LICENSE +21 -0
- package/built-in-skills/memory/references/llm-wiki/NOTICE.md +4 -0
- package/built-in-skills/memory/references/llm-wiki/scripts/lint_wiki.py +84 -0
- package/built-in-skills/memory/references/llm-wiki/scripts/requirements.txt +1 -0
- package/built-in-skills/memory/references/llm-wiki/templates/SCHEMA.md +19 -0
- package/built-in-skills/memory/references/llm-wiki/templates/index.md +9 -0
- package/built-in-skills/memory/references/llm-wiki/templates/log.md +4 -0
- package/built-in-skills/memory-dream/SKILL.md +8 -15
- package/built-in-skills/memory-import/SKILL.md +51 -0
- package/built-in-skills/office-artifacts/NOTICE.md +15 -0
- package/built-in-skills/office-artifacts/SKILL.md +20 -0
- package/built-in-skills/office-artifacts/references/RESOURCE-LIMITS.md +44 -0
- package/built-in-skills/office-artifacts/references/docx/GUIDE.md +196 -0
- package/built-in-skills/office-artifacts/references/docx/LICENSE +21 -0
- package/built-in-skills/office-artifacts/references/docx/NOTICE.md +21 -0
- package/built-in-skills/office-artifacts/references/docx/references/revisions-and-comments.md +88 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_comments.py +292 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_common.py +93 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_create.py +177 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_edit.py +250 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_read.py +169 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_revisions.py +149 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_template.py +70 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_validate.py +155 -0
- package/built-in-skills/office-artifacts/references/docx/tests/test_docx_skill.py +525 -0
- package/built-in-skills/office-artifacts/references/pdf/GUIDE.md +125 -0
- package/built-in-skills/office-artifacts/references/pdf/LICENSE +21 -0
- package/built-in-skills/office-artifacts/references/pdf/NOTICE.md +21 -0
- package/built-in-skills/office-artifacts/references/pdf/references/forms.md +99 -0
- package/built-in-skills/office-artifacts/references/pdf/references/nano-pdf-editing.md +40 -0
- package/built-in-skills/office-artifacts/references/pdf/references/ocr-extraction.md +165 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/_raster.py +87 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/extract_marker.py +95 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/extract_pymupdf.py +107 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_create.py +153 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_fill_form.py +97 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_form_layout.py +168 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_make_form.py +145 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_merge.py +50 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_meta.py +123 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_page_image.py +101 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_read.py +153 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_secure.py +71 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_split.py +86 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_stamp.py +145 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_watermark.py +51 -0
- package/built-in-skills/office-artifacts/references/pdf/tests/test_pdf_skill.py +414 -0
- package/built-in-skills/office-artifacts/references/powerpoint/GUIDE.md +220 -0
- package/built-in-skills/office-artifacts/references/powerpoint/LICENSE +21 -0
- package/built-in-skills/office-artifacts/references/powerpoint/NOTICE.md +21 -0
- package/built-in-skills/office-artifacts/references/powerpoint/scripts/pptx_create.py +214 -0
- package/built-in-skills/office-artifacts/references/powerpoint/scripts/pptx_edit.py +442 -0
- package/built-in-skills/office-artifacts/references/powerpoint/scripts/pptx_from_template.py +88 -0
- package/built-in-skills/office-artifacts/references/powerpoint/scripts/pptx_read.py +131 -0
- package/built-in-skills/office-artifacts/references/powerpoint/scripts/pptx_render.py +104 -0
- package/built-in-skills/office-artifacts/references/powerpoint/tests/test_powerpoint_skill.py +478 -0
- package/built-in-skills/office-artifacts/references/xlsx/GUIDE.md +196 -0
- package/built-in-skills/office-artifacts/references/xlsx/LICENSE +21 -0
- package/built-in-skills/office-artifacts/references/xlsx/NOTICE.md +21 -0
- package/built-in-skills/office-artifacts/references/xlsx/references/restructuring.md +74 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/csv_to_xlsx.py +108 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_create.py +259 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_edit.py +269 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_read.py +160 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_recalc.py +111 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_restructure.py +418 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_to_csv.py +69 -0
- package/built-in-skills/office-artifacts/references/xlsx/tests/test_xlsx_skill.py +542 -0
- package/built-in-skills/office-artifacts/tests/test_resource_regressions.py +272 -0
- package/built-in-skills/persona-generator/SKILL.md +9 -9
- package/built-in-skills/pkf-svg/SKILL.md +5 -0
- package/built-in-skills/pkf-svg/references/architecture-diagram/GUIDE.md +148 -0
- package/built-in-skills/pkf-svg/references/architecture-diagram/LICENSE +21 -0
- package/built-in-skills/pkf-svg/references/architecture-diagram/LICENSE.hermes +21 -0
- package/built-in-skills/pkf-svg/references/architecture-diagram/PROVENANCE.md +7 -0
- package/built-in-skills/pkf-svg/references/architecture-diagram/templates/template.html +345 -0
- package/built-in-skills/pkf-writing/SKILL.md +36 -14
- package/built-in-skills/prismer-airtable/LICENSE +21 -0
- package/built-in-skills/prismer-airtable/NOTICE.md +11 -0
- package/built-in-skills/prismer-airtable/SKILL.md +248 -0
- package/built-in-skills/prismer-airtable/scripts/airtable_client.py +76 -0
- package/built-in-skills/prismer-apple-notes/LICENSE +21 -0
- package/built-in-skills/prismer-apple-notes/NOTICE.md +17 -0
- package/built-in-skills/prismer-apple-notes/SKILL.md +118 -0
- package/built-in-skills/prismer-apple-notes/scripts/readiness.py +47 -0
- package/built-in-skills/prismer-apple-reminders/LICENSE +21 -0
- package/built-in-skills/prismer-apple-reminders/NOTICE.md +17 -0
- package/built-in-skills/prismer-apple-reminders/SKILL.md +155 -0
- package/built-in-skills/prismer-apple-reminders/scripts/readiness.py +47 -0
- package/built-in-skills/prismer-ascii-video/LICENSE +21 -0
- package/built-in-skills/prismer-ascii-video/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-ascii-video/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-ascii-video/README.md +290 -0
- package/built-in-skills/prismer-ascii-video/SKILL.md +252 -0
- package/built-in-skills/prismer-ascii-video/provenance/category-DESCRIPTION.md +3 -0
- package/built-in-skills/prismer-ascii-video/references/architecture.md +807 -0
- package/built-in-skills/prismer-ascii-video/references/composition.md +900 -0
- package/built-in-skills/prismer-ascii-video/references/effects.md +1877 -0
- package/built-in-skills/prismer-ascii-video/references/inputs.md +693 -0
- package/built-in-skills/prismer-ascii-video/references/optimization.md +688 -0
- package/built-in-skills/prismer-ascii-video/references/scenes.md +1018 -0
- package/built-in-skills/prismer-ascii-video/references/shaders.md +1408 -0
- package/built-in-skills/prismer-ascii-video/references/troubleshooting.md +360 -0
- package/built-in-skills/prismer-baoyu-infographic/LICENSE +21 -0
- package/built-in-skills/prismer-baoyu-infographic/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-baoyu-infographic/LICENSE.origin +21 -0
- package/built-in-skills/prismer-baoyu-infographic/PORT_NOTES.md +37 -0
- package/built-in-skills/prismer-baoyu-infographic/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-baoyu-infographic/SKILL.md +240 -0
- package/built-in-skills/prismer-baoyu-infographic/references/analysis-framework.md +182 -0
- package/built-in-skills/prismer-baoyu-infographic/references/base-prompt.md +43 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/bento-grid.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/binary-comparison.md +48 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/bridge.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/circular-flow.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/comic-strip.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/comparison-matrix.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/dashboard.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/dense-modules.md +72 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/funnel.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/hierarchical-layers.md +48 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/hub-spoke.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/iceberg.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/isometric-map.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/jigsaw.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/linear-progression.md +48 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/periodic-table.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/story-mountain.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/structural-breakdown.md +48 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/tree-branching.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/venn-diagram.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/winding-roadmap.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/structured-content-template.md +244 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/aged-academia.md +36 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/bold-graphic.md +36 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/chalkboard.md +61 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/claymation.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/corporate-memphis.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/craft-handmade.md +44 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/cyberpunk-neon.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/hand-drawn-edu.md +63 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/ikea-manual.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/kawaii.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/knolling.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/lego-brick.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/morandi-journal.md +60 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/origami.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/pixel-art.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/pop-laboratory.md +48 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/retro-pop-grid.md +47 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/storybook-watercolor.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/subway-map.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/technical-schematic.md +36 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/ui-wireframe.md +29 -0
- package/built-in-skills/prismer-blocked-page-recovery/LICENSE +21 -0
- package/built-in-skills/prismer-blocked-page-recovery/NOTICE.md +17 -0
- package/built-in-skills/prismer-blocked-page-recovery/SKILL.md +158 -0
- package/built-in-skills/prismer-blocked-page-recovery/scripts/recover_page.py +311 -0
- package/built-in-skills/prismer-box/LICENSE +21 -0
- package/built-in-skills/prismer-box/NOTICE.md +11 -0
- package/built-in-skills/prismer-box/SKILL.md +147 -0
- package/built-in-skills/prismer-box/references/bulk-operations.md +43 -0
- package/built-in-skills/prismer-box/references/cli-guide.md +133 -0
- package/built-in-skills/prismer-box/references/content-workflows.md +86 -0
- package/built-in-skills/prismer-box/references/hubs.md +77 -0
- package/built-in-skills/prismer-box/references/oauth-setup.md +92 -0
- package/built-in-skills/prismer-box/references/rest-api.md +37 -0
- package/built-in-skills/prismer-box/references/sdk-development.md +85 -0
- package/built-in-skills/prismer-box/references/search-and-ai.md +147 -0
- package/built-in-skills/prismer-box/references/troubleshooting.md +33 -0
- package/built-in-skills/prismer-box/references/webhooks-and-events.md +43 -0
- package/built-in-skills/prismer-codebase-inspection/LICENSE +21 -0
- package/built-in-skills/prismer-codebase-inspection/NOTICE.md +17 -0
- package/built-in-skills/prismer-codebase-inspection/SKILL.md +141 -0
- package/built-in-skills/prismer-computer-use/LICENSE +21 -0
- package/built-in-skills/prismer-computer-use/NOTICE.md +17 -0
- package/built-in-skills/prismer-computer-use/SKILL.md +372 -0
- package/built-in-skills/prismer-design-md/LICENSE +21 -0
- package/built-in-skills/prismer-design-md/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-design-md/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-design-md/SKILL.md +227 -0
- package/built-in-skills/prismer-design-md/templates/starter.md +99 -0
- package/built-in-skills/prismer-email-inbox-triage/LICENSE +21 -0
- package/built-in-skills/prismer-email-inbox-triage/NOTICE.md +11 -0
- package/built-in-skills/prismer-email-inbox-triage/SKILL.md +116 -0
- package/built-in-skills/prismer-findmy/LICENSE +21 -0
- package/built-in-skills/prismer-findmy/NOTICE.md +17 -0
- package/built-in-skills/prismer-findmy/SKILL.md +150 -0
- package/built-in-skills/prismer-findmy/scripts/readiness.py +47 -0
- package/built-in-skills/prismer-gif-search/LICENSE +21 -0
- package/built-in-skills/prismer-gif-search/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-gif-search/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-gif-search/SKILL.md +97 -0
- package/built-in-skills/prismer-gif-search/scripts/tenor.py +81 -0
- package/built-in-skills/prismer-github/LICENSE +21 -0
- package/built-in-skills/prismer-github/NOTICE.md +17 -0
- package/built-in-skills/prismer-github/SKILL.md +74 -0
- package/built-in-skills/prismer-github/references/auth.md +91 -0
- package/built-in-skills/prismer-github/references/ci-troubleshooting.md +193 -0
- package/built-in-skills/prismer-github/references/code-review.md +465 -0
- package/built-in-skills/prismer-github/references/conventional-commits.md +81 -0
- package/built-in-skills/prismer-github/references/github-api-cheatsheet.md +177 -0
- package/built-in-skills/prismer-github/references/issue-to-pr.md +74 -0
- package/built-in-skills/prismer-github/references/issues.md +336 -0
- package/built-in-skills/prismer-github/references/pr-workflow.md +346 -0
- package/built-in-skills/prismer-github/references/repo-management.md +484 -0
- package/built-in-skills/prismer-github/references/review-output-template.md +84 -0
- package/built-in-skills/prismer-github/scripts/ensure-gh.py +132 -0
- package/built-in-skills/prismer-github/scripts/gh-env.sh +25 -0
- package/built-in-skills/prismer-github/scripts/git-credential-token.py +68 -0
- package/built-in-skills/prismer-github/scripts/github-api.py +71 -0
- package/built-in-skills/prismer-github/scripts/github-context.py +28 -0
- package/built-in-skills/prismer-github/templates/bug-report.md +35 -0
- package/built-in-skills/prismer-github/templates/feature-request.md +31 -0
- package/built-in-skills/prismer-github/templates/pr-body-bugfix.md +35 -0
- package/built-in-skills/prismer-github/templates/pr-body-feature.md +33 -0
- package/built-in-skills/prismer-google-workspace/LICENSE +21 -0
- package/built-in-skills/prismer-google-workspace/NOTICE.md +11 -0
- package/built-in-skills/prismer-google-workspace/SKILL.md +369 -0
- package/built-in-skills/prismer-google-workspace/references/daily-brief.md +65 -0
- package/built-in-skills/prismer-google-workspace/references/gmail-search-syntax.md +63 -0
- package/built-in-skills/prismer-google-workspace/scripts/_hermes_home.py +17 -0
- package/built-in-skills/prismer-google-workspace/scripts/_private_state.py +39 -0
- package/built-in-skills/prismer-google-workspace/scripts/google_api.py +1339 -0
- package/built-in-skills/prismer-google-workspace/scripts/gws_bridge.py +121 -0
- package/built-in-skills/prismer-google-workspace/scripts/setup.py +563 -0
- package/built-in-skills/prismer-google-workspace/tests/test_productivity_regressions.py +214 -0
- package/built-in-skills/prismer-hermes-agent/LICENSE +21 -0
- package/built-in-skills/prismer-hermes-agent/NOTICE.md +17 -0
- package/built-in-skills/prismer-hermes-agent/SKILL.md +247 -0
- package/built-in-skills/prismer-hermes-agent/references/background-systems.md +108 -0
- package/built-in-skills/prismer-hermes-agent/references/cli-reference.md +158 -0
- package/built-in-skills/prismer-hermes-agent/references/configuration.md +96 -0
- package/built-in-skills/prismer-hermes-agent/references/contributor-guide.md +151 -0
- package/built-in-skills/prismer-hermes-agent/references/delegate-task-concurrency-diagnosis.md +47 -0
- package/built-in-skills/prismer-hermes-agent/references/desktop-plugins.md +215 -0
- package/built-in-skills/prismer-hermes-agent/references/native-mcp.md +351 -0
- package/built-in-skills/prismer-hermes-agent/references/petdex.md +82 -0
- package/built-in-skills/prismer-hermes-agent/references/portal-auth-for-third-party-apps.md +135 -0
- package/built-in-skills/prismer-hermes-agent/references/project-context-files.md +55 -0
- package/built-in-skills/prismer-hermes-agent/references/providers-and-models.md +81 -0
- package/built-in-skills/prismer-hermes-agent/references/security-privacy.md +73 -0
- package/built-in-skills/prismer-hermes-agent/references/slash-commands.md +119 -0
- package/built-in-skills/prismer-hermes-agent/references/themes.md +134 -0
- package/built-in-skills/prismer-hermes-agent/references/troubleshooting.md +87 -0
- package/built-in-skills/prismer-hermes-agent/references/tui-widgets.md +144 -0
- package/built-in-skills/prismer-hermes-agent/references/webhooks.md +219 -0
- package/built-in-skills/prismer-hermes-agent/references/windows-quirks.md +64 -0
- package/built-in-skills/prismer-hermes-agent/templates/clock.mjs +51 -0
- package/built-in-skills/prismer-hermes-agent/templates/plugin.js +97 -0
- package/built-in-skills/prismer-hermes-agent/templates/skin.yaml +49 -0
- package/built-in-skills/prismer-himalaya/LICENSE +21 -0
- package/built-in-skills/prismer-himalaya/NOTICE.md +11 -0
- package/built-in-skills/prismer-himalaya/SKILL.md +340 -0
- package/built-in-skills/prismer-himalaya/references/configuration.md +227 -0
- package/built-in-skills/prismer-himalaya/references/message-composition.md +206 -0
- package/built-in-skills/prismer-himalaya/scripts/compose_draft.py +48 -0
- package/built-in-skills/prismer-im-collab/SKILL.md +1 -1
- package/built-in-skills/prismer-imessage/LICENSE +21 -0
- package/built-in-skills/prismer-imessage/NOTICE.md +17 -0
- package/built-in-skills/prismer-imessage/SKILL.md +128 -0
- package/built-in-skills/prismer-imessage/scripts/readiness.py +47 -0
- package/built-in-skills/prismer-manim-video/LICENSE +21 -0
- package/built-in-skills/prismer-manim-video/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-manim-video/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-manim-video/README.md +23 -0
- package/built-in-skills/prismer-manim-video/SKILL.md +279 -0
- package/built-in-skills/prismer-manim-video/references/animation-design-thinking.md +161 -0
- package/built-in-skills/prismer-manim-video/references/animations.md +282 -0
- package/built-in-skills/prismer-manim-video/references/camera-and-3d.md +135 -0
- package/built-in-skills/prismer-manim-video/references/decorations.md +202 -0
- package/built-in-skills/prismer-manim-video/references/equations.md +216 -0
- package/built-in-skills/prismer-manim-video/references/graphs-and-data.md +163 -0
- package/built-in-skills/prismer-manim-video/references/mobjects.md +333 -0
- package/built-in-skills/prismer-manim-video/references/paper-explainer.md +255 -0
- package/built-in-skills/prismer-manim-video/references/production-quality.md +190 -0
- package/built-in-skills/prismer-manim-video/references/rendering.md +187 -0
- package/built-in-skills/prismer-manim-video/references/scene-planning.md +118 -0
- package/built-in-skills/prismer-manim-video/references/troubleshooting.md +135 -0
- package/built-in-skills/prismer-manim-video/references/updaters-and-trackers.md +260 -0
- package/built-in-skills/prismer-manim-video/references/visual-design.md +124 -0
- package/built-in-skills/prismer-manim-video/scripts/setup.sh +15 -0
- package/built-in-skills/prismer-maps/LICENSE +21 -0
- package/built-in-skills/prismer-maps/NOTICE.md +11 -0
- package/built-in-skills/prismer-maps/SKILL.md +240 -0
- package/built-in-skills/prismer-maps/scripts/maps_client.py +1324 -0
- package/built-in-skills/prismer-node-inspect-debugger/LICENSE +21 -0
- package/built-in-skills/prismer-node-inspect-debugger/NOTICE.md +17 -0
- package/built-in-skills/prismer-node-inspect-debugger/SKILL.md +347 -0
- package/built-in-skills/prismer-notion/LICENSE +21 -0
- package/built-in-skills/prismer-notion/NOTICE.md +11 -0
- package/built-in-skills/prismer-notion/SKILL.md +495 -0
- package/built-in-skills/prismer-notion/references/block-types.md +112 -0
- package/built-in-skills/prismer-obsidian/LICENSE +21 -0
- package/built-in-skills/prismer-obsidian/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-obsidian/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-obsidian/SKILL.md +80 -0
- package/built-in-skills/prismer-obsidian/provenance/category-DESCRIPTION.md +3 -0
- package/built-in-skills/prismer-obsidian/scripts/write_note.py +84 -0
- package/built-in-skills/prismer-p5js/LICENSE +21 -0
- package/built-in-skills/prismer-p5js/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-p5js/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-p5js/README.md +64 -0
- package/built-in-skills/prismer-p5js/SKILL.md +574 -0
- package/built-in-skills/prismer-p5js/references/animation.md +439 -0
- package/built-in-skills/prismer-p5js/references/color-systems.md +355 -0
- package/built-in-skills/prismer-p5js/references/core-api.md +410 -0
- package/built-in-skills/prismer-p5js/references/export-pipeline.md +534 -0
- package/built-in-skills/prismer-p5js/references/interaction.md +398 -0
- package/built-in-skills/prismer-p5js/references/shapes-and-geometry.md +300 -0
- package/built-in-skills/prismer-p5js/references/troubleshooting.md +532 -0
- package/built-in-skills/prismer-p5js/references/typography.md +302 -0
- package/built-in-skills/prismer-p5js/references/visual-effects.md +905 -0
- package/built-in-skills/prismer-p5js/references/webgl-and-3d.md +423 -0
- package/built-in-skills/prismer-p5js/scripts/export-frames.js +91 -0
- package/built-in-skills/prismer-p5js/scripts/render.sh +113 -0
- package/built-in-skills/prismer-p5js/scripts/serve.sh +25 -0
- package/built-in-skills/prismer-p5js/scripts/setup.sh +87 -0
- package/built-in-skills/prismer-p5js/templates/viewer.html +401 -0
- package/built-in-skills/prismer-popular-web-designs/LICENSE +21 -0
- package/built-in-skills/prismer-popular-web-designs/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-popular-web-designs/LICENSE.origin +21 -0
- package/built-in-skills/prismer-popular-web-designs/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-popular-web-designs/SKILL.md +218 -0
- package/built-in-skills/prismer-popular-web-designs/templates/airbnb.md +259 -0
- package/built-in-skills/prismer-popular-web-designs/templates/airtable.md +102 -0
- package/built-in-skills/prismer-popular-web-designs/templates/apple.md +326 -0
- package/built-in-skills/prismer-popular-web-designs/templates/bmw.md +193 -0
- package/built-in-skills/prismer-popular-web-designs/templates/cal.md +272 -0
- package/built-in-skills/prismer-popular-web-designs/templates/claude.md +325 -0
- package/built-in-skills/prismer-popular-web-designs/templates/clay.md +317 -0
- package/built-in-skills/prismer-popular-web-designs/templates/clickhouse.md +294 -0
- package/built-in-skills/prismer-popular-web-designs/templates/cohere.md +279 -0
- package/built-in-skills/prismer-popular-web-designs/templates/coinbase.md +142 -0
- package/built-in-skills/prismer-popular-web-designs/templates/composio.md +320 -0
- package/built-in-skills/prismer-popular-web-designs/templates/cursor.md +322 -0
- package/built-in-skills/prismer-popular-web-designs/templates/elevenlabs.md +278 -0
- package/built-in-skills/prismer-popular-web-designs/templates/expo.md +294 -0
- package/built-in-skills/prismer-popular-web-designs/templates/figma.md +233 -0
- package/built-in-skills/prismer-popular-web-designs/templates/framer.md +259 -0
- package/built-in-skills/prismer-popular-web-designs/templates/hashicorp.md +291 -0
- package/built-in-skills/prismer-popular-web-designs/templates/ibm.md +345 -0
- package/built-in-skills/prismer-popular-web-designs/templates/intercom.md +159 -0
- package/built-in-skills/prismer-popular-web-designs/templates/kraken.md +138 -0
- package/built-in-skills/prismer-popular-web-designs/templates/linear.app.md +380 -0
- package/built-in-skills/prismer-popular-web-designs/templates/lovable.md +311 -0
- package/built-in-skills/prismer-popular-web-designs/templates/minimax.md +270 -0
- package/built-in-skills/prismer-popular-web-designs/templates/mintlify.md +339 -0
- package/built-in-skills/prismer-popular-web-designs/templates/miro.md +121 -0
- package/built-in-skills/prismer-popular-web-designs/templates/mistral.ai.md +274 -0
- package/built-in-skills/prismer-popular-web-designs/templates/mongodb.md +279 -0
- package/built-in-skills/prismer-popular-web-designs/templates/notion.md +322 -0
- package/built-in-skills/prismer-popular-web-designs/templates/nvidia.md +306 -0
- package/built-in-skills/prismer-popular-web-designs/templates/ollama.md +280 -0
- package/built-in-skills/prismer-popular-web-designs/templates/opencode.ai.md +294 -0
- package/built-in-skills/prismer-popular-web-designs/templates/pinterest.md +243 -0
- package/built-in-skills/prismer-popular-web-designs/templates/posthog.md +269 -0
- package/built-in-skills/prismer-popular-web-designs/templates/raycast.md +281 -0
- package/built-in-skills/prismer-popular-web-designs/templates/replicate.md +274 -0
- package/built-in-skills/prismer-popular-web-designs/templates/resend.md +316 -0
- package/built-in-skills/prismer-popular-web-designs/templates/revolut.md +198 -0
- package/built-in-skills/prismer-popular-web-designs/templates/runwayml.md +257 -0
- package/built-in-skills/prismer-popular-web-designs/templates/sanity.md +370 -0
- package/built-in-skills/prismer-popular-web-designs/templates/sentry.md +275 -0
- package/built-in-skills/prismer-popular-web-designs/templates/spacex.md +207 -0
- package/built-in-skills/prismer-popular-web-designs/templates/spotify.md +259 -0
- package/built-in-skills/prismer-popular-web-designs/templates/stripe.md +335 -0
- package/built-in-skills/prismer-popular-web-designs/templates/supabase.md +268 -0
- package/built-in-skills/prismer-popular-web-designs/templates/superhuman.md +265 -0
- package/built-in-skills/prismer-popular-web-designs/templates/together.ai.md +276 -0
- package/built-in-skills/prismer-popular-web-designs/templates/uber.md +308 -0
- package/built-in-skills/prismer-popular-web-designs/templates/vercel.md +323 -0
- package/built-in-skills/prismer-popular-web-designs/templates/voltagent.md +336 -0
- package/built-in-skills/prismer-popular-web-designs/templates/warp.md +266 -0
- package/built-in-skills/prismer-popular-web-designs/templates/webflow.md +105 -0
- package/built-in-skills/prismer-popular-web-designs/templates/wise.md +186 -0
- package/built-in-skills/prismer-popular-web-designs/templates/x.ai.md +270 -0
- package/built-in-skills/prismer-popular-web-designs/templates/zapier.md +341 -0
- package/built-in-skills/prismer-product-price-monitor/LICENSE +21 -0
- package/built-in-skills/prismer-product-price-monitor/NOTICE.md +11 -0
- package/built-in-skills/prismer-product-price-monitor/SKILL.md +97 -0
- package/built-in-skills/prismer-product-price-monitor/scripts/watch_state.py +116 -0
- package/built-in-skills/prismer-python-debugpy/LICENSE +21 -0
- package/built-in-skills/prismer-python-debugpy/NOTICE.md +17 -0
- package/built-in-skills/prismer-python-debugpy/SKILL.md +377 -0
- package/built-in-skills/prismer-python-debugpy/scripts/dap_client.py +68 -0
- package/built-in-skills/prismer-songsee/LICENSE +21 -0
- package/built-in-skills/prismer-songsee/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-songsee/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-songsee/SKILL.md +91 -0
- package/built-in-skills/prismer-songwriting-and-ai-music/LICENSE +21 -0
- package/built-in-skills/prismer-songwriting-and-ai-music/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-songwriting-and-ai-music/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-songwriting-and-ai-music/SKILL.md +317 -0
- package/built-in-skills/prismer-spike/LICENSE +21 -0
- package/built-in-skills/prismer-spike/LICENSE.gsd +21 -0
- package/built-in-skills/prismer-spike/NOTICE.md +17 -0
- package/built-in-skills/prismer-spike/SKILL.md +212 -0
- package/built-in-skills/prismer-teams-meeting-pipeline/LICENSE +21 -0
- package/built-in-skills/prismer-teams-meeting-pipeline/NOTICE.md +11 -0
- package/built-in-skills/prismer-teams-meeting-pipeline/SKILL.md +156 -0
- package/built-in-skills/prismer-xurl/LICENSE +21 -0
- package/built-in-skills/prismer-xurl/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-xurl/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-xurl/SKILL.md +444 -0
- package/built-in-skills/prismer-xurl/provenance/category-DESCRIPTION.md +3 -0
- package/built-in-skills/prismer-youtube-content/LICENSE +21 -0
- package/built-in-skills/prismer-youtube-content/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-youtube-content/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-youtube-content/SKILL.md +86 -0
- package/built-in-skills/prismer-youtube-content/provenance/category-DESCRIPTION.md +3 -0
- package/built-in-skills/prismer-youtube-content/references/output-formats.md +56 -0
- package/built-in-skills/prismer-youtube-content/scripts/fetch_transcript.py +146 -0
- package/built-in-skills/research-arxiv/LICENSE +21 -0
- package/built-in-skills/research-arxiv/NOTICE.md +4 -0
- package/built-in-skills/research-arxiv/SKILL.md +263 -0
- package/built-in-skills/research-arxiv/scripts/search_arxiv.py +111 -0
- package/built-in-skills/role-builder/SKILL.md +7 -1
- package/built-in-skills/role-builder/scripts/author-role.mjs +23 -7
- package/built-in-skills/role-builder/scripts/ingest-role.mjs +15 -117
- package/built-in-skills/role-builder/scripts/instantiate-and-run.mjs +15 -1
- package/built-in-skills/role-builder/scripts/operation-harness.mjs +6 -4
- package/built-in-skills/skill-creator/LICENSE.prismer +21 -0
- package/built-in-skills/skill-creator/NOTICE.md +18 -0
- package/built-in-skills/skill-creator/SKILL.md +20 -1
- package/built-in-skills/skill-creator/eval-viewer/generate_review.py +20 -31
- package/built-in-skills/skill-creator/eval-viewer/viewer.html +35 -23
- package/built-in-skills/skill-creator/references/hermes-agent-skill-authoring/GUIDE.md +220 -0
- package/built-in-skills/skill-creator/references/hermes-agent-skill-authoring/LICENSE +21 -0
- package/built-in-skills/{skill-authoring/SKILL.md → skill-creator/references/skill-authoring/GUIDE.md} +1 -1
- package/built-in-skills/{skill-builder/SKILL.md → skill-creator/references/skill-builder/GUIDE.md} +8 -12
- package/built-in-skills/skill-creator/references/skill-builder/scripts/ingest.mjs +93 -0
- package/built-in-skills/skill-creator/scripts/aggregate_benchmark.py +3 -2
- package/built-in-skills/skill-creator/scripts/import-library.mjs +30 -7
- package/built-in-skills/skill-creator/scripts/improve_description.py +14 -16
- package/built-in-skills/skill-creator/scripts/package_skill.py +16 -9
- package/built-in-skills/skill-creator/scripts/quick_validate.py +22 -5
- package/built-in-skills/skill-creator/scripts/run_eval.py +63 -144
- package/built-in-skills/skill-creator/scripts/run_loop.py +24 -16
- package/built-in-skills/slack-gif-creator/core/gif_builder.py +13 -2
- package/built-in-skills/slack-gif-creator/core/validators.py +17 -7
- package/built-in-skills/tasks/SKILL.md +2 -2
- package/built-in-skills/tdd/SKILL.md +7 -0
- package/built-in-skills/tdd/references/test-driven-development/GUIDE.md +356 -0
- package/built-in-skills/tdd/references/test-driven-development/LICENSE +21 -0
- package/built-in-skills/tdd/references/test-driven-development/LICENSE.superpowers +21 -0
- package/built-in-skills/tdd/references/test-driven-development/NOTICE.md +37 -0
- package/built-in-skills/team/SKILL.md +1 -1
- package/built-in-skills/web-artifacts-builder/SKILL.md +3 -3
- package/built-in-skills/web-artifacts-builder/scripts/bundle-artifact.sh +9 -7
- package/built-in-skills/web-artifacts-builder/scripts/init-artifact.sh +28 -55
- package/built-in-skills/webapp-qa/LICENSE +21 -0
- package/built-in-skills/webapp-qa/NOTICE.md +37 -0
- package/built-in-skills/webapp-qa/SKILL.md +41 -0
- package/built-in-skills/webapp-qa/references/dogfood/GUIDE.md +161 -0
- package/built-in-skills/webapp-qa/references/issue-taxonomy.md +109 -0
- package/built-in-skills/webapp-qa/templates/dogfood-report-template.md +86 -0
- package/built-in-skills/webapp-testing/SKILL.md +9 -2
- package/built-in-skills/webapp-testing/examples/console_logging.py +10 -4
- package/built-in-skills/webapp-testing/examples/element_discovery.py +11 -4
- package/built-in-skills/webapp-testing/examples/static_html_automation.py +14 -9
- package/built-in-skills/webapp-testing/scripts/with_server.py +34 -10
- package/built-in-skills/weekly-review/LICENSE +21 -0
- package/built-in-skills/weekly-review/NOTICE.md +21 -0
- package/built-in-skills/weekly-review/SKILL.md +49 -0
- package/components/eaas-pi-components.manifest.json +37 -0
- package/dist/cli.cjs +7079 -3327
- package/dist/cli.js +6706 -2936
- package/dist/index.cjs +7930 -3822
- package/dist/index.d.cts +484 -5
- package/dist/index.d.ts +484 -5
- package/dist/index.js +7181 -3064
- package/package.json +7 -2
- package/plugins/memory/prismer/__init__.py +4 -0
- package/plugins/memory/prismer/tool-schemas.generated.json +8 -0
- package/built-in-skills/skill-builder/scripts/ingest.mjs +0 -265
- package/built-in-skills/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- /package/built-in-skills/{document-generation/SKILL.md → office-artifacts/references/document-generation/GUIDE.md} +0 -0
- /package/built-in-skills/{skill-authoring/skill.json → skill-creator/references/skill-authoring/draft-contract.json} +0 -0
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
# Native MCP Client
|
|
2
|
+
|
|
3
|
+
> Maintainer reference only. Read-only diagnosis may use the deployed Hermes
|
|
4
|
+
> version; mutation, installation, provider credentials, cron, webhook, profile
|
|
5
|
+
> and lifecycle changes require a separate authorized Runtime maintenance task.
|
|
6
|
+
> These examples do not install tools or grant permissions in a tenant session.
|
|
7
|
+
> Do not copy literal secret placeholders into config; inject scoped credentials
|
|
8
|
+
> through the existing Runtime mechanism. Verify version-specific commands.
|
|
9
|
+
|
|
10
|
+
Hermes Agent has a built-in MCP client that connects to MCP servers at startup, discovers their tools, and makes them available as first-class tools the agent can call directly. No bridge CLI needed -- tools from MCP servers appear alongside built-in tools like `terminal`, `read_file`, etc.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
|
|
14
|
+
Use this whenever you want to:
|
|
15
|
+
- Connect to MCP servers and use their tools from within Hermes Agent
|
|
16
|
+
- Add external capabilities (filesystem access, GitHub, databases, APIs) via MCP
|
|
17
|
+
- Run local stdio-based MCP servers (npx, uvx, or any command)
|
|
18
|
+
- Connect to remote HTTP/StreamableHTTP MCP servers
|
|
19
|
+
- Have MCP tools auto-discovered and available in every conversation
|
|
20
|
+
|
|
21
|
+
For ad-hoc, one-off MCP tool calls from the terminal without configuring anything, see the `mcporter` skill instead.
|
|
22
|
+
|
|
23
|
+
## Prerequisites
|
|
24
|
+
|
|
25
|
+
- **mcp Python package** -- optional dependency; install with `pip install mcp`. If not installed, MCP support is silently disabled.
|
|
26
|
+
- **Node.js** -- required for `npx`-based MCP servers (most community servers)
|
|
27
|
+
- **uv** -- required for `uvx`-based MCP servers (Python-based servers)
|
|
28
|
+
|
|
29
|
+
Install the MCP SDK:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
pip install mcp
|
|
33
|
+
# or, if using uv:
|
|
34
|
+
uv pip install mcp
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Quick Start
|
|
38
|
+
|
|
39
|
+
Add MCP servers to `~/.hermes/config.yaml` under the `mcp_servers` key:
|
|
40
|
+
|
|
41
|
+
```yaml
|
|
42
|
+
mcp_servers:
|
|
43
|
+
time:
|
|
44
|
+
command: "uvx"
|
|
45
|
+
args: ["mcp-server-time"]
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Restart Hermes Agent. On startup it will:
|
|
49
|
+
1. Connect to the server
|
|
50
|
+
2. Discover available tools
|
|
51
|
+
3. Register them with the prefix `mcp_time_*`
|
|
52
|
+
4. Inject them into all platform toolsets
|
|
53
|
+
|
|
54
|
+
You can then use the tools naturally -- just ask the agent to get the current time.
|
|
55
|
+
|
|
56
|
+
## Configuration Reference
|
|
57
|
+
|
|
58
|
+
Each entry under `mcp_servers` is a server name mapped to its config. There are two transport types: **stdio** (command-based) and **HTTP** (url-based).
|
|
59
|
+
|
|
60
|
+
### Stdio Transport (command + args)
|
|
61
|
+
|
|
62
|
+
```yaml
|
|
63
|
+
mcp_servers:
|
|
64
|
+
server_name:
|
|
65
|
+
command: "npx" # (required) executable to run
|
|
66
|
+
args: ["-y", "pkg-name"] # (optional) command arguments, default: []
|
|
67
|
+
env: # (optional) environment variables for the subprocess
|
|
68
|
+
SOME_API_KEY: "value"
|
|
69
|
+
timeout: 120 # (optional) per-tool-call timeout in seconds, default: 120
|
|
70
|
+
connect_timeout: 60 # (optional) initial connection timeout in seconds, default: 60
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### HTTP Transport (url)
|
|
74
|
+
|
|
75
|
+
```yaml
|
|
76
|
+
mcp_servers:
|
|
77
|
+
server_name:
|
|
78
|
+
url: "https://my-server.example.com/mcp" # (required) server URL
|
|
79
|
+
headers: # (optional) HTTP headers
|
|
80
|
+
Authorization: "Bearer sk-..."
|
|
81
|
+
timeout: 180 # (optional) per-tool-call timeout in seconds, default: 120
|
|
82
|
+
connect_timeout: 60 # (optional) initial connection timeout in seconds, default: 60
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### All Config Options
|
|
86
|
+
|
|
87
|
+
| Option | Type | Default | Description |
|
|
88
|
+
|-------------------|--------|---------|---------------------------------------------------|
|
|
89
|
+
| `command` | string | -- | Executable to run (stdio transport, required) |
|
|
90
|
+
| `args` | list | `[]` | Arguments passed to the command |
|
|
91
|
+
| `env` | dict | `{}` | Extra environment variables for the subprocess |
|
|
92
|
+
| `url` | string | -- | Server URL (HTTP transport, required) |
|
|
93
|
+
| `headers` | dict | `{}` | HTTP headers sent with every request |
|
|
94
|
+
| `timeout` | int | `120` | Per-tool-call timeout in seconds |
|
|
95
|
+
| `connect_timeout` | int | `60` | Timeout for initial connection and discovery |
|
|
96
|
+
|
|
97
|
+
Note: A server config must have either `command` (stdio) or `url` (HTTP), not both.
|
|
98
|
+
|
|
99
|
+
## How It Works
|
|
100
|
+
|
|
101
|
+
### Startup Discovery
|
|
102
|
+
|
|
103
|
+
When Hermes Agent starts, `discover_mcp_tools()` is called during tool initialization:
|
|
104
|
+
|
|
105
|
+
1. Reads `mcp_servers` from `~/.hermes/config.yaml`
|
|
106
|
+
2. For each server, spawns a connection in a dedicated background event loop
|
|
107
|
+
3. Initializes the MCP session and calls `list_tools()` to discover available tools
|
|
108
|
+
4. Registers each tool in the Hermes tool registry
|
|
109
|
+
|
|
110
|
+
### Tool Naming Convention
|
|
111
|
+
|
|
112
|
+
MCP tools are registered with the naming pattern:
|
|
113
|
+
|
|
114
|
+
```
|
|
115
|
+
mcp_{server_name}_{tool_name}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Hyphens and dots in names are replaced with underscores for LLM API compatibility.
|
|
119
|
+
|
|
120
|
+
Examples:
|
|
121
|
+
- Server `filesystem`, tool `read_file` → `mcp_filesystem_read_file`
|
|
122
|
+
- Server `github`, tool `list-issues` → `mcp_github_list_issues`
|
|
123
|
+
- Server `my-api`, tool `fetch.data` → `mcp_my_api_fetch_data`
|
|
124
|
+
|
|
125
|
+
### Auto-Injection
|
|
126
|
+
|
|
127
|
+
After discovery, MCP tools are automatically injected into all `hermes-*` platform toolsets (CLI, Discord, Telegram, etc.). This means MCP tools are available in every conversation without any additional configuration.
|
|
128
|
+
|
|
129
|
+
### Connection Lifecycle
|
|
130
|
+
|
|
131
|
+
- Each server runs as a long-lived asyncio Task in a background daemon thread
|
|
132
|
+
- Connections persist for the lifetime of the agent process
|
|
133
|
+
- If a connection drops, automatic reconnection with exponential backoff kicks in (up to 5 retries, max 60s backoff)
|
|
134
|
+
- On agent shutdown, all connections are gracefully closed
|
|
135
|
+
|
|
136
|
+
### Idempotency
|
|
137
|
+
|
|
138
|
+
`discover_mcp_tools()` is idempotent -- calling it multiple times only connects to servers that aren't already connected. Failed servers are retried on subsequent calls.
|
|
139
|
+
|
|
140
|
+
## Transport Types
|
|
141
|
+
|
|
142
|
+
### Stdio Transport
|
|
143
|
+
|
|
144
|
+
The most common transport. Hermes launches the MCP server as a subprocess and communicates over stdin/stdout.
|
|
145
|
+
|
|
146
|
+
```yaml
|
|
147
|
+
mcp_servers:
|
|
148
|
+
filesystem:
|
|
149
|
+
command: "npx"
|
|
150
|
+
args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/projects"]
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
The subprocess inherits a **filtered** environment (see Security section below) plus any variables you specify in `env`.
|
|
154
|
+
|
|
155
|
+
### HTTP / StreamableHTTP Transport
|
|
156
|
+
|
|
157
|
+
For remote or shared MCP servers. Requires the `mcp` package to include HTTP client support (`mcp.client.streamable_http`).
|
|
158
|
+
|
|
159
|
+
```yaml
|
|
160
|
+
mcp_servers:
|
|
161
|
+
remote_api:
|
|
162
|
+
url: "https://mcp.example.com/mcp"
|
|
163
|
+
headers:
|
|
164
|
+
Authorization: "Bearer sk-..."
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
If HTTP support is not available in your installed `mcp` version, the server will fail with an ImportError and other servers will continue normally.
|
|
168
|
+
|
|
169
|
+
## Security
|
|
170
|
+
|
|
171
|
+
### Environment Variable Filtering
|
|
172
|
+
|
|
173
|
+
For stdio servers, Hermes does NOT pass your full shell environment to MCP subprocesses. Only safe baseline variables are inherited:
|
|
174
|
+
|
|
175
|
+
- `PATH`, `HOME`, `USER`, `LANG`, `LC_ALL`, `TERM`, `SHELL`, `TMPDIR`
|
|
176
|
+
- Any `XDG_*` variables
|
|
177
|
+
|
|
178
|
+
All other environment variables (API keys, tokens, secrets) are excluded unless you explicitly add them via the `env` config key. This prevents accidental credential leakage to untrusted MCP servers.
|
|
179
|
+
|
|
180
|
+
```yaml
|
|
181
|
+
mcp_servers:
|
|
182
|
+
github:
|
|
183
|
+
command: "npx"
|
|
184
|
+
args: ["-y", "@modelcontextprotocol/server-github"]
|
|
185
|
+
env:
|
|
186
|
+
# Only this token is passed to the subprocess
|
|
187
|
+
GITHUB_PERSONAL_ACCESS_TOKEN: "ghp_..."
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### Credential Stripping in Error Messages
|
|
191
|
+
|
|
192
|
+
If an MCP tool call fails, any credential-like patterns in the error message are automatically redacted before being shown to the LLM. This covers:
|
|
193
|
+
|
|
194
|
+
- GitHub PATs (`ghp_...`)
|
|
195
|
+
- OpenAI-style keys (`sk-...`)
|
|
196
|
+
- Bearer tokens
|
|
197
|
+
- Generic `token=`, `key=`, `API_KEY=`, `password=`, `secret=` patterns
|
|
198
|
+
|
|
199
|
+
## Troubleshooting
|
|
200
|
+
|
|
201
|
+
### "MCP SDK not available -- skipping MCP tool discovery"
|
|
202
|
+
|
|
203
|
+
The `mcp` Python package is not installed. Install it:
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
pip install mcp
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### "No MCP servers configured"
|
|
210
|
+
|
|
211
|
+
No `mcp_servers` key in `~/.hermes/config.yaml`, or it's empty. Add at least one server.
|
|
212
|
+
|
|
213
|
+
### "Failed to connect to MCP server 'X'"
|
|
214
|
+
|
|
215
|
+
Common causes:
|
|
216
|
+
- **Command not found**: The `command` binary isn't on PATH. Ensure `npx`, `uvx`, or the relevant command is installed.
|
|
217
|
+
- **Package not found**: For npx servers, the npm package may not exist or may need `-y` in args to auto-install.
|
|
218
|
+
- **Timeout**: The server took too long to start. Increase `connect_timeout`.
|
|
219
|
+
- **Port conflict**: For HTTP servers, the URL may be unreachable.
|
|
220
|
+
|
|
221
|
+
### "MCP server 'X' requires HTTP transport but mcp.client.streamable_http is not available"
|
|
222
|
+
|
|
223
|
+
Your `mcp` package version doesn't include HTTP client support. Upgrade:
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
pip install --upgrade mcp
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
### Tools not appearing
|
|
230
|
+
|
|
231
|
+
- Check that the server is listed under `mcp_servers` (not `mcp` or `servers`)
|
|
232
|
+
- Ensure the YAML indentation is correct
|
|
233
|
+
- Look at Hermes Agent startup logs for connection messages
|
|
234
|
+
- Tool names are prefixed with `mcp_{server}_{tool}` -- look for that pattern
|
|
235
|
+
|
|
236
|
+
### Connection keeps dropping
|
|
237
|
+
|
|
238
|
+
The client retries up to 5 times with exponential backoff (1s, 2s, 4s, 8s, 16s, capped at 60s). If the server is fundamentally unreachable, it gives up after 5 attempts. Check the server process and network connectivity.
|
|
239
|
+
|
|
240
|
+
## Examples
|
|
241
|
+
|
|
242
|
+
### Time Server (uvx)
|
|
243
|
+
|
|
244
|
+
```yaml
|
|
245
|
+
mcp_servers:
|
|
246
|
+
time:
|
|
247
|
+
command: "uvx"
|
|
248
|
+
args: ["mcp-server-time"]
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
Registers tools like `mcp_time_get_current_time`.
|
|
252
|
+
|
|
253
|
+
### Filesystem Server (npx)
|
|
254
|
+
|
|
255
|
+
```yaml
|
|
256
|
+
mcp_servers:
|
|
257
|
+
filesystem:
|
|
258
|
+
command: "npx"
|
|
259
|
+
args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/documents"]
|
|
260
|
+
timeout: 30
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
Registers tools like `mcp_filesystem_read_file`, `mcp_filesystem_write_file`, `mcp_filesystem_list_directory`.
|
|
264
|
+
|
|
265
|
+
### GitHub Server with Authentication
|
|
266
|
+
|
|
267
|
+
```yaml
|
|
268
|
+
mcp_servers:
|
|
269
|
+
github:
|
|
270
|
+
command: "npx"
|
|
271
|
+
args: ["-y", "@modelcontextprotocol/server-github"]
|
|
272
|
+
env:
|
|
273
|
+
GITHUB_PERSONAL_ACCESS_TOKEN: "ghp_xxxxxxxxxxxxxxxxxxxx"
|
|
274
|
+
timeout: 60
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
Registers tools like `mcp_github_list_issues`, `mcp_github_create_pull_request`, etc.
|
|
278
|
+
|
|
279
|
+
### Remote HTTP Server
|
|
280
|
+
|
|
281
|
+
```yaml
|
|
282
|
+
mcp_servers:
|
|
283
|
+
company_api:
|
|
284
|
+
url: "https://mcp.mycompany.com/v1/mcp"
|
|
285
|
+
headers:
|
|
286
|
+
Authorization: "Bearer sk-xxxxxxxxxxxxxxxxxxxx"
|
|
287
|
+
X-Team-Id: "engineering"
|
|
288
|
+
timeout: 180
|
|
289
|
+
connect_timeout: 30
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
### Multiple Servers
|
|
293
|
+
|
|
294
|
+
```yaml
|
|
295
|
+
mcp_servers:
|
|
296
|
+
time:
|
|
297
|
+
command: "uvx"
|
|
298
|
+
args: ["mcp-server-time"]
|
|
299
|
+
|
|
300
|
+
filesystem:
|
|
301
|
+
command: "npx"
|
|
302
|
+
args: ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/dir"]
|
|
303
|
+
|
|
304
|
+
github:
|
|
305
|
+
command: "npx"
|
|
306
|
+
args: ["-y", "@modelcontextprotocol/server-github"]
|
|
307
|
+
env:
|
|
308
|
+
GITHUB_PERSONAL_ACCESS_TOKEN: "ghp_xxxxxxxxxxxxxxxxxxxx"
|
|
309
|
+
|
|
310
|
+
company_api:
|
|
311
|
+
url: "https://mcp.internal.company.com/mcp"
|
|
312
|
+
headers:
|
|
313
|
+
Authorization: "Bearer sk-xxxxxxxxxxxxxxxxxxxx"
|
|
314
|
+
timeout: 300
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
All tools from all servers are registered and available simultaneously. Each server's tools are prefixed with its name to avoid collisions.
|
|
318
|
+
|
|
319
|
+
## Sampling (Server-Initiated LLM Requests)
|
|
320
|
+
|
|
321
|
+
Hermes supports MCP's `sampling/createMessage` capability — MCP servers can request LLM completions through the agent during tool execution. This enables agent-in-the-loop workflows (data analysis, content generation, decision-making).
|
|
322
|
+
|
|
323
|
+
Sampling is **enabled by default**. Configure per server:
|
|
324
|
+
|
|
325
|
+
```yaml
|
|
326
|
+
mcp_servers:
|
|
327
|
+
my_server:
|
|
328
|
+
command: "npx"
|
|
329
|
+
args: ["-y", "my-mcp-server"]
|
|
330
|
+
sampling:
|
|
331
|
+
enabled: true # default: true
|
|
332
|
+
model: "gemini-3-flash" # model override (optional)
|
|
333
|
+
max_tokens_cap: 4096 # max tokens per request
|
|
334
|
+
timeout: 30 # LLM call timeout (seconds)
|
|
335
|
+
max_rpm: 10 # max requests per minute
|
|
336
|
+
allowed_models: [] # model whitelist (empty = all)
|
|
337
|
+
max_tool_rounds: 5 # tool loop limit (0 = disable)
|
|
338
|
+
log_level: "info" # audit verbosity
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
Servers can also include `tools` in sampling requests for multi-turn tool-augmented workflows. The `max_tool_rounds` config prevents infinite tool loops. Per-server audit metrics (requests, errors, tokens, tool use count) are tracked via `get_mcp_status()`.
|
|
342
|
+
|
|
343
|
+
Disable sampling for untrusted servers with `sampling: { enabled: false }`.
|
|
344
|
+
|
|
345
|
+
## Notes
|
|
346
|
+
|
|
347
|
+
- MCP tools are called synchronously from the agent's perspective but run asynchronously on a dedicated background event loop
|
|
348
|
+
- Tool results are returned as JSON with either `{"result": "..."}` or `{"error": "..."}`
|
|
349
|
+
- The native MCP client is independent of `mcporter` -- you can use both simultaneously
|
|
350
|
+
- Server connections are persistent and shared across all conversations in the same agent process
|
|
351
|
+
- Reload behavior is version-dependent. The audited slash catalog includes /reload-mcp; verify actual deployed support and active-session effects before use. Do not restart user sessions implicitly.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Petdex — Animated Pet Mascots
|
|
2
|
+
|
|
3
|
+
> Maintainer reference only. Read-only diagnosis may use the deployed Hermes
|
|
4
|
+
> version; mutation, installation, provider credentials, cron, webhook, profile
|
|
5
|
+
> and lifecycle changes require a separate authorized Runtime maintenance task.
|
|
6
|
+
> These examples do not install tools or grant permissions in a tenant session.
|
|
7
|
+
> Do not copy literal secret placeholders into config; inject scoped credentials
|
|
8
|
+
> through the existing Runtime mechanism. Verify version-specific commands.
|
|
9
|
+
|
|
10
|
+
Browse, install, and select animated "pet" mascots from the public
|
|
11
|
+
[petdex](https://github.com/crafter-station/petdex) gallery. An installed pet
|
|
12
|
+
reacts to agent activity (idle, running a tool, reviewing, error, done) across
|
|
13
|
+
the Hermes CLI, TUI, and desktop app. This skill drives the `hermes pets` CLI
|
|
14
|
+
and the `display.pet` config — it does not generate sprites.
|
|
15
|
+
|
|
16
|
+
## When to Use
|
|
17
|
+
|
|
18
|
+
- The user wants a desktop/terminal mascot or asks about "pets" / petdex.
|
|
19
|
+
- The user wants to change, preview, or disable the active pet.
|
|
20
|
+
- Diagnosing why a pet isn't showing (terminal graphics support, config).
|
|
21
|
+
|
|
22
|
+
## Prerequisites
|
|
23
|
+
|
|
24
|
+
- Network access to `petdex.dev` for the gallery/manifest (read-only, no auth).
|
|
25
|
+
- Pillow (a core Hermes dependency) for sprite decoding — already installed.
|
|
26
|
+
- For full-fidelity terminal rendering: a graphics-capable terminal (kitty,
|
|
27
|
+
Ghostty, WezTerm, iTerm2, or sixel). Otherwise a truecolor Unicode
|
|
28
|
+
half-block fallback is used automatically.
|
|
29
|
+
|
|
30
|
+
## How to Run
|
|
31
|
+
|
|
32
|
+
Use the `terminal` tool to run `hermes pets <subcommand>`.
|
|
33
|
+
|
|
34
|
+
## Quick Reference
|
|
35
|
+
|
|
36
|
+
| Goal | Command |
|
|
37
|
+
| --- | --- |
|
|
38
|
+
| Browse the gallery | `hermes pets list` (add a substring to filter: `hermes pets list cat`) |
|
|
39
|
+
| List installed pets | `hermes pets list --installed` |
|
|
40
|
+
| Install a pet | `hermes pets install <slug>` (add `--select` to make it active) |
|
|
41
|
+
| Set the active pet | `hermes pets select <slug>` (omit slug for a picker) |
|
|
42
|
+
| Resize the pet everywhere | `hermes pets scale <factor>` (e.g. `0.5`, clamped 0.1–3.0) |
|
|
43
|
+
| Preview/animate in terminal | `hermes pets show [slug] [--cycle] [--state run]` |
|
|
44
|
+
| Disable the pet | `hermes pets off` |
|
|
45
|
+
| Remove a pet | `hermes pets remove <slug>` |
|
|
46
|
+
| Diagnose setup | `hermes pets doctor` |
|
|
47
|
+
|
|
48
|
+
## Procedure
|
|
49
|
+
|
|
50
|
+
1. Find a pet: `hermes pets list <query>` and note its `slug`.
|
|
51
|
+
2. Install + activate: `hermes pets install <slug> --select`.
|
|
52
|
+
3. Preview it: `hermes pets show` (Ctrl+C to stop).
|
|
53
|
+
4. Confirm setup: `hermes pets doctor` — shows the resolved pet, configured
|
|
54
|
+
render mode, detected terminal graphics protocol, and effective mode.
|
|
55
|
+
|
|
56
|
+
Pets install into `<HERMES_HOME>/pets/<slug>/` (profile-aware). Selecting a pet
|
|
57
|
+
writes `display.pet.slug` + `display.pet.enabled` to `config.yaml`.
|
|
58
|
+
|
|
59
|
+
## Configuration
|
|
60
|
+
|
|
61
|
+
Under `display.pet` in `config.yaml`:
|
|
62
|
+
|
|
63
|
+
- `enabled` (bool) — master on/off.
|
|
64
|
+
- `slug` (str) — active pet; empty = first installed.
|
|
65
|
+
- `render_mode` — `auto` (detect) | `kitty` | `iterm` | `sixel` | `unicode` | `off`.
|
|
66
|
+
- `scale` (float) — on-screen size of the native 192×208 frames (default 0.33,
|
|
67
|
+
clamped 0.1–3.0). One knob resizes every surface; set it with
|
|
68
|
+
`hermes pets scale <factor>`, the `/pet scale` slash command, or the desktop
|
|
69
|
+
Appearance slider.
|
|
70
|
+
- `unicode_cols` (int) — width in columns for the Unicode fallback.
|
|
71
|
+
|
|
72
|
+
## Pitfalls
|
|
73
|
+
|
|
74
|
+
- A pet only shows once one is installed AND selected (`enabled: true`).
|
|
75
|
+
- Inside a pipe/redirect (no TTY) terminal rendering is disabled by design.
|
|
76
|
+
- The petdex npm CLI installs to `~/.codex/pets`; Hermes uses its own
|
|
77
|
+
profile-scoped `<HERMES_HOME>/pets/` instead — install through `hermes pets`.
|
|
78
|
+
|
|
79
|
+
## Verification
|
|
80
|
+
|
|
81
|
+
- `hermes pets doctor` reports `✓ ready` when a pet is installed, selected,
|
|
82
|
+
enabled, and Pillow is importable.
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# Nous Portal — authenticating third-party apps against the subscription
|
|
2
|
+
|
|
3
|
+
> Maintainer reference only. Read-only diagnosis may use the deployed Hermes
|
|
4
|
+
> version; mutation, installation, provider credentials, cron, webhook, profile
|
|
5
|
+
> and lifecycle changes require a separate authorized Runtime maintenance task.
|
|
6
|
+
> These examples do not install tools or grant permissions in a tenant session.
|
|
7
|
+
> Do not copy literal secret placeholders into config; inject scoped credentials
|
|
8
|
+
> through the existing Runtime mechanism. Verify version-specific commands.
|
|
9
|
+
|
|
10
|
+
Recurring user question: "Can app X (Karakeep, OpenWebUI, LibreChat, OpenViking,
|
|
11
|
+
LangChain pipeline, n8n flow, etc.) use my Nous Portal subscription without me
|
|
12
|
+
copy-pasting an API key — ideally via the Portal login I already have?"
|
|
13
|
+
|
|
14
|
+
The honest answer has three architectural layers people conflate. Walk through
|
|
15
|
+
them in order before proposing solutions.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Layer 1 — Is this thing a Hermes plugin, or a separate app?
|
|
20
|
+
|
|
21
|
+
This is the question to answer FIRST. The "OpenViking" case in particular
|
|
22
|
+
trips agents up.
|
|
23
|
+
|
|
24
|
+
| Surface | What it actually is | Auth path |
|
|
25
|
+
|---|---|---|
|
|
26
|
+
| **OpenViking memory plugin** (`plugins/memory/openviking/`) | Code that runs **inside the Hermes process**. Its LLM calls go through Hermes's already-configured provider. | Already uses Portal if user's Hermes is configured for Portal. Nothing extra needed. `OPENVIKING_API_KEY` is the OpenViking *server's* own auth, not LLM auth. |
|
|
27
|
+
| **OpenViking the standalone server** (separate container) | A separate context-DB service. If it ever calls an LLM on its own, that's a separate HTTP client. | Same as any external app — Layer 2/3 below. |
|
|
28
|
+
| **Karakeep, n8n, LibreChat, OpenWebUI, any self-hosted app** | Different process, often different machine. Makes its own HTTPS calls to `inference-api.nousresearch.com`. | Layer 2/3 below. |
|
|
29
|
+
|
|
30
|
+
**Pitfall to avoid**: do not pitch "OAuth into Portal" as the solution for a
|
|
31
|
+
plugin that already runs inside Hermes. That LLM call is already authenticated
|
|
32
|
+
via Hermes's provider config. The plugin's own server auth (e.g.
|
|
33
|
+
`OPENVIKING_API_KEY` for talking to the OpenViking REST API) is unrelated to
|
|
34
|
+
Portal.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Layer 2 — For genuinely external apps, what does Portal actually expose?
|
|
39
|
+
|
|
40
|
+
Portal at `https://inference-api.nousresearch.com/v1` is an OpenAI-compatible
|
|
41
|
+
inference endpoint. It accepts **bearer-token authentication only**: either
|
|
42
|
+
|
|
43
|
+
1. **A static API key** from `portal.nousresearch.com → API Keys`, or
|
|
44
|
+
2. **An x402-protocol payment header** (Solana USDC, beta, anonymous, per-request).
|
|
45
|
+
|
|
46
|
+
There is **no general OAuth 2.0 authorization server**. There is no
|
|
47
|
+
"Sign in with Nous Portal" SSO that third-party apps can register as clients
|
|
48
|
+
against. There is no shared cookie or session that browser-Portal-login
|
|
49
|
+
extends to other apps on the same machine.
|
|
50
|
+
|
|
51
|
+
What Hermes Agent has that *feels* like OAuth — `hermes login --provider nous`
|
|
52
|
+
opening a browser, user signs in, token lands in `~/.hermes/auth.json` — is a
|
|
53
|
+
**Hermes-specific browser flow**. Under the hood it produces a credential
|
|
54
|
+
Hermes uses as a bearer. It is not a public OAuth provider that Karakeep et al.
|
|
55
|
+
can implement a client for, because it isn't an OAuth provider at all from the
|
|
56
|
+
outside.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Layer 3 — Can we bridge the gap without Portal changing anything?
|
|
61
|
+
|
|
62
|
+
For a standalone upstream integration, the conceptual pattern is a **local credential-broker proxy**. Prismer already owns this boundary in Runtime; do not instantiate the following design as a skill side effect. Even without a public
|
|
63
|
+
OAuth flow, an app on the user's machine can:
|
|
64
|
+
|
|
65
|
+
1. Have the authorized Runtime credential owner provision a scoped credential; do not read shared auth.json from a skill.
|
|
66
|
+
2. Expose a local OpenAI-compatible endpoint at `http://localhost:NNNN/v1`.
|
|
67
|
+
3. Forward incoming requests to `inference-api.nousresearch.com/v1` with that
|
|
68
|
+
bearer attached.
|
|
69
|
+
|
|
70
|
+
Karakeep/OpenWebUI/etc. then point at `http://localhost:NNNN/v1` with any
|
|
71
|
+
placeholder key. The user never copies their Portal key around — the proxy
|
|
72
|
+
rides on the credential Hermes already holds.
|
|
73
|
+
|
|
74
|
+
Where this could live in Hermes:
|
|
75
|
+
|
|
76
|
+
- `gateway/platforms/api_server.py` is the precedent — it exposes the agent
|
|
77
|
+
over a local OpenAI-compatible endpoint, but routes through the full agent
|
|
78
|
+
loop (tool calls and all). The proxy variant is **pure inference
|
|
79
|
+
pass-through**: no agent loop, no tools, just forward `/chat/completions`
|
|
80
|
+
upstream with the user's stored Portal bearer.
|
|
81
|
+
- ~150 lines as a new gateway adapter or a plugin under `plugins/`.
|
|
82
|
+
- Token refresh: if the browser-OAuth flow produces a refreshable token, the
|
|
83
|
+
credential pool's refresh logic already exists. If it's a long-lived static
|
|
84
|
+
bearer, even simpler.
|
|
85
|
+
|
|
86
|
+
This is genuinely useful and worth shipping — it's the answer to "use my
|
|
87
|
+
Portal sub with $external_app without copy-pasting keys."
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Real OAuth provider on Portal — when is it worth pitching?
|
|
92
|
+
|
|
93
|
+
Only when the consumer is *another first-party Nous thing* (a future SDK, a
|
|
94
|
+
Nous-branded extension, a Discord-bot integration that needs per-user
|
|
95
|
+
delegation, etc.). Pitching it as the answer to "use my Portal sub with
|
|
96
|
+
Karakeep" is selling the user a thing that won't reach them: even if Portal
|
|
97
|
+
shipped OAuth tomorrow, Karakeep's LLM-provider config UI is `base_url +
|
|
98
|
+
bearer_token` with no OAuth client, no callback handler, no token refresh.
|
|
99
|
+
The OpenAI ecosystem standardized on static bearers and downstream apps
|
|
100
|
+
won't rebuild their config UX to accommodate a new auth flow.
|
|
101
|
+
|
|
102
|
+
The features that would actually help users today, and that Portal could ship
|
|
103
|
+
without depending on third-party app changes:
|
|
104
|
+
|
|
105
|
+
- **Scoped, named, revocable API keys** with last-used timestamps. Same UX
|
|
106
|
+
benefits people want from OAuth (revoke a compromised key, see what's using
|
|
107
|
+
the sub, scope a key to specific models), in a shape every existing app
|
|
108
|
+
already supports.
|
|
109
|
+
- **Per-key rate limits** so a noisy app can be capped without eating the
|
|
110
|
+
user's headroom for Hermes itself.
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## Talking-points cheatsheet (for next time)
|
|
115
|
+
|
|
116
|
+
When the user asks "can $APP use my Portal subscription":
|
|
117
|
+
|
|
118
|
+
1. First decide: Hermes plugin (runs inside Hermes) or separate app? If plugin,
|
|
119
|
+
it already uses Portal via Hermes's provider config — done.
|
|
120
|
+
2. If separate app: today, paste the static API key from Portal → API Keys.
|
|
121
|
+
Base URL `https://inference-api.nousresearch.com/v1`. Rate limits are
|
|
122
|
+
subscription-tier based, applied per-key.
|
|
123
|
+
3. If the user pushes back with "but I don't want to paste a key" — that's
|
|
124
|
+
the local-broker-proxy answer (Layer 3). Do not build another broker inside Prismer; the existing Runtime gateway/proxy owns this flow. Not a Portal-side
|
|
125
|
+
OAuth roadmap problem.
|
|
126
|
+
4. Mixed setup ("Portal for some things, OpenRouter/Ollama Cloud for the
|
|
127
|
+
Hermes agent itself") is fully supported. Hermes treats agent
|
|
128
|
+
provider/model and tool-side LLM calls as independent config; you can
|
|
129
|
+
point each at a different endpoint.
|
|
130
|
+
|
|
131
|
+
**Note on the Tool Gateway**: the "no separate accounts, no API key juggling"
|
|
132
|
+
pitch in the Tool Gateway announcement is specifically about Hermes Agent's
|
|
133
|
+
*tools* (web search, browser, image gen, TTS) flowing through the Portal
|
|
134
|
+
subscription when Hermes is configured to use Portal as its provider. It is
|
|
135
|
+
**not** a claim that arbitrary third-party apps inherit Portal auth.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Project Context Files
|
|
2
|
+
|
|
3
|
+
> Maintainer reference only. Read-only diagnosis may use the deployed Hermes
|
|
4
|
+
> version; mutation, installation, provider credentials, cron, webhook, profile
|
|
5
|
+
> and lifecycle changes require a separate authorized Runtime maintenance task.
|
|
6
|
+
> These examples do not install tools or grant permissions in a tenant session.
|
|
7
|
+
> Do not copy literal secret placeholders into config; inject scoped credentials
|
|
8
|
+
> through the existing Runtime mechanism. Verify version-specific commands.
|
|
9
|
+
|
|
10
|
+
Hermes injects project-level instructions into the system prompt by reading context files from the working directory. The discovery order is **first match wins** — only one project context source is loaded per session.
|
|
11
|
+
|
|
12
|
+
| File (in priority order) | Discovery | Use when |
|
|
13
|
+
|---|---|---|
|
|
14
|
+
| `.hermes.md` / `HERMES.md` | Walks parents up to the git root, stops at git root | You want hierarchical project rules (root + per-package overrides) |
|
|
15
|
+
| `AGENTS.md` / `agents.md` | **Cwd only** — subdirectory and parent copies are ignored | You want portable agent instructions that work the same in Hermes, Claude Code, Codex, etc. |
|
|
16
|
+
| `CLAUDE.md` / `claude.md` | Cwd only | Same as AGENTS.md, Claude-flavored |
|
|
17
|
+
| `.cursorrules` / `.cursor/rules/*.mdc` | Cwd only | Migrating from Cursor |
|
|
18
|
+
|
|
19
|
+
`SOUL.md` (in `$HERMES_HOME`) is independent and always loaded when present — it sets the agent's identity, not project rules.
|
|
20
|
+
|
|
21
|
+
### Pick the right one
|
|
22
|
+
|
|
23
|
+
- **Use `.hermes.md`** when you want Hermes-specific behavior that lives above the cwd (root + subtree), or when you want rules to inherit from a parent directory. The parent walk stops at the git root, so a home-level `.hermes.md` won't leak into every project (a git repo's root is the boundary).
|
|
24
|
+
- **Use `AGENTS.md`** when the same project will also be worked on by other agents (Codex, Claude Code, OpenCode). Those tools all have their own conventions for `AGENTS.md`, and the "cwd only" contract keeps the file portable.
|
|
25
|
+
- **Don't put project rules in `~/.hermes/AGENTS.md`** (or any other home-level location). When Hermes runs with that directory as cwd, the file loads — but only for that one directory. For cross-project context, use `SOUL.md` (in `$HERMES_HOME`, identity-only) or install a skill via `hermes skills install`.
|
|
26
|
+
|
|
27
|
+
### Size and truncation
|
|
28
|
+
|
|
29
|
+
Each context file is capped at 20,000 characters. Files longer than that get **head + tail** truncated (the middle is dropped, with a `[...truncated...]` marker). For large project rules, prefer splitting into multiple skills over cramming one file.
|
|
30
|
+
|
|
31
|
+
### Security
|
|
32
|
+
|
|
33
|
+
All context files pass through the threat-pattern scanner before reaching the system prompt. Patterns matching prompt injection or promptware are replaced with a `[BLOCKED: ...]` placeholder. This means an `AGENTS.md` containing obvious injection attempts won't reach the model — the scanner blocks the content, not the file, so the rest of the file still loads.
|
|
34
|
+
|
|
35
|
+
### Disable for one session
|
|
36
|
+
|
|
37
|
+
`hermes --ignore-rules` skips auto-injection of all project context files (`.hermes.md`, `AGENTS.md`, `CLAUDE.md`, `.cursorrules`) **and** `SOUL.md` identity, plus user config, plugins, and MCP servers. Use it to isolate whether a problem is your setup or Hermes itself.
|
|
38
|
+
|
|
39
|
+
### Example: a small `.hermes.md`
|
|
40
|
+
|
|
41
|
+
```markdown
|
|
42
|
+
# My Project
|
|
43
|
+
|
|
44
|
+
Hermes: when working in this repo, follow these rules.
|
|
45
|
+
|
|
46
|
+
## Build
|
|
47
|
+
- Always run `make test` before declaring a change done.
|
|
48
|
+
- Use `uv run` for Python, not `pip install`.
|
|
49
|
+
|
|
50
|
+
## Style
|
|
51
|
+
- Prefer `pathlib.Path` over `os.path`.
|
|
52
|
+
- No `print()` in production code — use the `logger`.
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
That file at `/home/me/projects/myrepo/.hermes.md` is auto-loaded when Hermes runs in any subdirectory of `/home/me/projects/myrepo`, but not when it runs in `/home/me/other-project`.
|