9 first-party plugins

Connect the systems
you already use.

A source is a plugin — a tap — pinned at an immutable commit and built in a sandbox on first use. It fetches raw material into the append-only evidence ledger; nothing it returns becomes truth until you accept a proposal built from it.

Capability keys
ns writes to this namespace
net declared network hosts
auth sign-in realm
Files & repositories
Local trees and git, no auth
sweep
ns · file

Glob a local directory tree into hashed, versioned evidence.

Config
root *Directory tree to sweep — ~/notes
patternsGlobs relative to root — default **/*
kindItem kind swept files carry — file
max_file_bytesPer-file size cap — 64 MiB
git-repo
ns · reponet · git remote

Any git repository's tree, local or remote, at a ref — swept as versioned evidence. System git carries the credentials.

Config
url *Git URL or local path — github.com/org/repo
git_refBranch, tag or commit — default HEAD
patternsRepo-relative globs — docs/**/*.md
kind · maxItem kind & 64 MiB per-file cap
Microsoft 365 · Graph
Shared multi-tenant app · device-code sign-in · auth: ms-graph
graph-mail

Microsoft 365 mail with attachments; narrow with mail_filter.

graphgraph.microsoft.com
graph-calendar

Microsoft 365 calendar events, over the same sign-in.

graphgraph.microsoft.com
graph-meetings

Teams meetings that carry transcripts or attendance reports.

graphgraph.microsoft.com
graph-chats

Teams chats and their messages — the slow crawl, on its own cadence.

graphgraph.microsoft.com
sharepoint-file

A tracked SharePoint / OneDrive file or folder, by sharing link, snapshot-fetched.

sharepoint*.sharepoint.com
Shared sign-in

The four windowed Graph plugins share one config — owner_addresses, plus optional client_id / tenant. Leave the app id empty to use the shared multi-tenant kyyn app. mail_filter is graph-mail only; sharepoint-file takes a sharing-link url instead.

Systems of record & federation
salesforce
ns · sfauth · salesforce

A SOQL query's records as evidence, via a Connected App device-flow sign-in.

Config
instance_url *Org's My Domain URL
client_id *Connected App consumer key (device flow)
query *SELECT Id, Name, StageName FROM Opportunity
kind · api · idItem kind, REST version v62.0, identity field
kb
ns · kbnet · KB remote

Ingest another kyyn KB as evidence — federation via curation, no shared ontology.

Config
url *Git URL / path of the remote KB's ontology repo
git_refBranch or tag — default main
includePaths swept — default facts/**, receipts/**
How a tap works
Pinned, sandbox-built, and yours to extend
01
Pin a commit

A KB pins its tap repo at an immutable (repo, rev) in sources.ron. A fresh kyyn init pins the first-party tap.

02
Build in a sandbox

Kyyn clones and builds the tap on first use inside a bubblewrap jail — read-only checkout, private /proc & /dev, network denied for the build. Its manifest declares the hosts its fetches need.

03
Fetch to the ledger

One RON request per invocation returns evidence into the append-only ledger under the plugin's namespace. The agent curates from there.

Write your own. First-party plugins aren't special — a tap is a repo with a kyyn-tap.ron manifest and a binary calling tap_main with a plugin table. Pin yours in sources.ron the same way.

kyyn— from kin: knowledge that knows what it's related to.How it worksSourcesRoadmap