← Browse

@cosmik-network/semble

A

Semble is a social knowledge network for research built on the AT Protocol.

mcp_servermcp

Install

agr install @cosmik-network/semble --target claude

This artifact does not publish files for Claude.

Document

{ "name": "semble", "version": "1.0.0", "description": "", "main": "index.js", "workspaces": [ "src/types", "src/contract", "src/webapp", "src/packages/semble-pds-client", "src/packages/sdk" ], "directories": { "doc": "docs" }, "scripts": { "build:webapp": "npm run build:contract && npm run build --workspace=semble-webapp", "build:types": "npm run build --workspace=@semble/types", "build:contract": "npm run build:types && npm run build --workspace=@semble/contract", "build:sdk": "npm run build:contract && npm run build --workspace=@semble.so/api", "dev:types": "npm run dev --workspace=@semble/types", "type-check": "tsc --noEmit", "start": "node dist/index.js", "worker:feeds": "node dist/workers/feed-worker.js", "worker:search": "node dist/workers/search-worker.js", "worker:firehose": "node dist/workers/firehose-worker.js", "worker:notifications": "node dist/workers/notification-worker.js", "worker:sync": "node dist/workers/sync-worker.js", "test": "jest", "test:unit": "jest --testPathIgnorePatterns='.integration.test.|.e2e.test.|src/webapp/'", "test:integration": "jest --testPathPattern='.integration.test.'", "test:integration:db": "jest --testPathPattern='.integration.test.' --testNamePattern='Drizzle'", "test:integration:db:watch": "jest --watch --testPathPattern='.integration.test.' --testNamePattern='Drizzle'", "test:integration:redis": "jest --testPathPattern='.integration.test.' --testNamePattern='BullMQ'", "test:integration:redis:watch": "jest --watch --testPathPattern='.integration.test.' --testNamePattern='BullMQ'", "test:e2e": "jest --testPathPattern='.e2e.test.' --testTimeout=300000", "test:watch": "jest --watch", "test:unit:watch": "jest --watch --testPathIgnorePatterns='.integration.test.' --testPathIgnorePatterns='.e2e.test.'", "test:integration:watch": "jest --watch --testPathPattern='.integration.test.'", "build": "tsup", "build:check": "tsc --noEmit", "build:watch": "tsc --watch", "dev:app:inner": "dotenv -e .env.local -- concurrently -k -n TYPE,APP -c red,blue "tsc --noEmit --watch" "tsup --watch --onSuccess='node dist/index.js'"", "dev:worker:feeds:inner": "dotenv -e .env.local -- concurrently -k -n WORKER -c green "tsup --watch --onSuccess='node dist/workers/feed-worker.js'"", "dev:worker:search:inner": "dotenv -e .env.local -- concurrently -k -n WORKER -c yellow "tsup --watch --onSuccess='node dist/workers/search-worker.js'"", "dev:mock": "USE_MOCK_PERSISTENCE=true USE_FAKE_PUBLISHERS=true USE_MOCK_AUTH=true USE_MOCK_VECTOR_DB=true npm run dev:app:inner", "dev:mock:pub:auth": "USE_FAKE_PUBLISHERS=true USE_MOCK_AUTH=true npm run dev", "dev": "bash ./scripts/dev-combined.sh", "dev:tunnel": "TUNNEL=true bash ./scripts/dev-combined.sh", "dev:mock:tunnel": "TUNNEL=true USE_MOCK_PERSISTENCE=true USE_FAKE_PUBLISHERS=true USE_MOCK_AUTH=true USE_MOCK_VECTOR_DB=true npm run dev:app:inner", "migrate": "node dist/scripts/migrate.js", "lexgen": "lex gen-server ./src/modules/atproto/infrastructure/lexicon ./src/modules/atproto/infrastructure/lexicons/* ./src/modules/atproto/infrastructure/lexicons/at/margin/", "db:start": "docker run --name annos-postgres -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres -e POSTGRES_DB=annotations -p 5432:5432 -d postgres:14", "db:stop": "docker stop annos-postgres", "db:remove": "docker rm annos-postgres", "redis:start": "docker run --name annos-redis -p 6379:6379 -d redis:7-alpine", "redis:stop": "docker stop annos-redis", "redis:remove": "docker rm annos-redis", "db:generate": "drizzle-kit generate --schema=./src/modules/**/.sql.ts --out=./src/shared/infrastructure/database/migrations --dialect=postgresql", "webapp:test": "npm run webapp:test:unit && npm run webapp:test:e2e", "webapp:test:unit": "cd src/webapp && npm run test", "webapp:test:e2e": "cd src/webapp && npx playwright test", "webapp:test:e2e:report": "cd src/webapp && npx playwright show-report", "webapp:dev": "npm run build:types && cd src/webapp && npm run dev", "webapp:dev:tunnel": "npm run build:types && cd src/webapp && npm run dev:tunnel", "webapp:extension:dev": "cd src/webapp && npm run dev:extension", "webapp:build": "cd src/webapp && npm run build", "webapp:start": "cd src/webapp && npm run start", "webapp:storybook": "cd src/webapp && npm run storybook", "webapp:type-check": "cd src/webapp && npm run type-check", "format": "prettier --write .", "format:check": "prettier --check .", "lint": "eslint .", "lint:fix": "eslint . --fix" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "@atproto/api": "^0.15.2", "@atproto/common": "^0.4.10", "@atproto/identity": "^0.4.9", "@atproto/lexicon": "^0.4.10", "@atproto/oauth-client-node": "^0.2.15", "@atproto/sync": "^0.1.36", "@atproto/syntax": "^0.4.0", "@atproto/xrpc-server": "^0.7.15", "@modelcontextprotocol/sdk": "^1.29.0", "@semble/contract": "", "@semble/types": "", "@sentry/node": "^10.42.0", "@ts-rest/open-api": "^3.52.1", "@upstash/vector": "^1.2.2", "atpi": "^1.0.7", "bullmq": "^5.56.8", "cookie-parser": "^1.4.7", "cors": "^2.8.5", "dotenv": "^16.5.0", "express": "^5.1.0", "ioredis": "^5.11.0", "jsonwebtoken": "^9.0.2", "postgres": "^3.4.5", "react-force-graph-2d": "^1.29.1", "redlock": "^5.0.0-beta.2", "uuid": "^11.1.0", "zod": "^3.22.4" }, "devDependencies": { "@atproto/lex-cli": "^0.8.0", "@flydotio/dockerfile": "^0.7.10", "@posthog/react": "^1.8.0", "@testcontainers/postgresql": "^11.0.3", "@testcontainers/redis": "^11.4.0", "@types/cookie-parser": "^1.4.9", "@types/cors": "^2.8.18", "@types/express": "^5.0.1", "@types/ioredis": "^5.0.0", "@types/jest": "^29.5.14", "@types/jsdom": "^21.1.7", "@types/jsonwebtoken": "^9.0.9", "@types/pg": "^8.11.13", "@types/supertest": "^6.0.3", "@types/ws": "^8.18.1", "@typescript-eslint/eslint-plugin": "^8.37.0", "@typescript-eslint/parser": "^8.37.0", "concurrently": "^9.1.2", "dotenv-cli": "^8.0.0", "drizzle-kit": "^0.31.1", "drizzle-orm": "^0.43.1", "eslint": "^9.31.0", "eslint-config-prettier": "^10.1.5", "eslint-plugin-prettier": "^5.5.1", "jest": "^29.7.0", "jsdom": "^26.1.0", "nodemon": "^3.1.10", "pg": "^8.14.1", "playwright": "^1.40.0", "posthog-js": "^1.348.0", "prettier": "^3.6.2", "supertest": "^7.1.0", "testcontainers": "^11.0.3", "ts-jest": "^29.3.2", "tsconfig-paths": "^4.2.0", "tsup": "^8.4.0", "typescript": "^5.8.3", "vite": "^8.0.10" }, "overrides": { "bullmq": { "ioredis": "$ioredis" }, "ioredis": "$ioredis" } }

Repository README

Describes cosmik-network/semble as a whole, which may contain artifacts other than this one. Where this artifact had no useful description of its own, its summary was taken from here.

Semble

semble banner image

Semble is a social knowledge network for research built on the AT Protocol.

In Semble, you can save links as Cards to Collections and discover what other users are doing in the Explore tab.

Eventually, we will support Collaborative Collections, Activity Feeds based on bluesky or semble following, Follow Collections directly, Notifications, and a Browser Extension for quick saving + Web Annotations.

Semble is being built by Cosmik Network. Get involved here.

Learn more about Cosmik Network and Semble here.

Citation

DOI

If you use Semble in your research or build on it, please cite it using the metadata in CITATION.cff or the format below:

@software{semble2025,
  author    = {Finck, Wesley and Delfanazari, Pouria and Tamari, Ronen},
  title     = {Semble: A social network for curating, connecting and discovering research built on the {AT} Protocol},
  year      = {2025},
  publisher = {Cosmik Network},
  url       = {https://semble.so/},
  doi       = {10.5281/zenodo.20618035}
}

Trustgrade A

  • passBody integrity

    Whether the stored document is plausibly the kind of file the artifact declares, rather than something fetched by mistake.

  • warnType matchbest-effort: server code not analyzed

    Whether the artifact is really the kind of thing its metadata claims it is.

  • passFreshness

    How long since the source repository was last pushed to.

  • passPrompt injection

    Scans the artifact's own text for instructions aimed at your agent rather than at you.

  • passLicense

    Whether the source repository declares an SPDX license permissive enough to redistribute.

How the grade is calculated

Each check contributes 0 points when it passes, 1 when it warns, and 2 when it fails. The total maps to a letter:

  • Aevery check passed
  • Bone warning
  • Ctwo warnings
  • Dprompt injection or body integrity failed, or three warnings
  • Fone of those failed, and something else is wrong

These are automated hygiene checks, not a security audit, and not a dependency or vulnerability scan. A grade of A means nothing was flagged — not that the artifact is safe.

Versions

  • git-303c8d1f44932026-08-06