Social Poster Hermes Workshop

Two lessons for today

A workshop pack for installing Hermes, posting through Social Poster, then auditing the repo and turning findings into PR requests.

Deliverables

2hHermes setup and Social Poster posting flow
2hRepo audit, UI review, code review, PR request
+1FreeLLMAPI add-on for learners without paid model access
0Shared platform tokens or raw social API bypasses

Operating Model

Hermes assists. Social Poster owns account connection, workspace scope, publish state, and audit evidence.

1. Install agent CLICodex or Cursor Agent gives the learner a terminal AI workflow.
2. Install HermesHermes becomes the local agent shell and model tool runner.
3. Connect accountUser signs into Social Poster and completes OAuth or supported connection.
4. Human publishesHermes drafts copy. Social Poster composer performs the actual publish.
5. Verify evidencePipeline, logs, platform URL, or exact error proves the outcome.

Decision Matrix

Default to the path that is easiest to finish live and safest for real accounts.

Agent CLI

Use Codex if learners already have ChatGPT or API access. Use Cursor Agent if their editor setup is already Cursor based.

Publishing route

Use Social Poster UI. Do not teach raw social token posting. Current internal agent tools are intentionally narrow.

No paid model access

Use FreeLLMAPI locally as an OpenAI-compatible endpoint. Treat it as workshop infrastructure, not production inference.

Lesson 1: Hermes to Social Poster

2 hours
TimeBlockDone when
0:00Safety boundaryLearner knows public posts require their approval.
0:10Install Codex or Cursor AgentCLI version command works.
0:25Install Hermeshermes version and hermes doctor work.
0:45Configure modelhermes -z returns hermes-ready.
1:05Connect accountConnected account row is visible and enabled.
1:25Create postDraft or published post exists in Social Poster.
1:50VerifyPipeline or logs show status or exact error.
Instructor script: Hermes generates copy. Social Poster handles account scope, preview, the Publish click, logs, and platform result.
curl -fsSL https://chatgpt.com/codex/install.sh | sh
codex --version

curl https://cursor.com/install -fsS | bash
agent --version || cursor-agent --version || cursor --version

curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
hermes version
hermes doctor
hermes setup --portal
hermes -z "Reply with exactly: hermes-ready"
hermes -z "Create a safe workshop test post for a social automation platform. It must say it is a test. No claims, no hashtags, no emoji, under 180 chars."

Lesson 2: Audit and PR Requests

2 hours
TimeBlockArtifact
0:00Mission and repo tourTarget area selected.
0:10Clone and installRepo boots or blocker logged.
0:25Run gatesLint, typecheck, tests, build evidence.
0:45UI auditScreenshot plus repro.
1:15Code and safety auditFile refs plus risk statement.
1:40PR requestIssue or draft PR with evidence.
Strong output: one concrete problem, a screenshot or command trace, file references, expected behavior, and a small proposed fix.
git clone https://github.com/maxpetrusenko/social-poster.git
cd social-poster
npm install
cp .env.example .env.local
mkdir -p data
DISABLE_AUTH=true DATABASE_URL=./data/social-poster.db npm run db:push

npm run lint
npm run typecheck
npm run test
npm run build
npx -y react-doctor --full --offline --json --no-respect-inline-disables
DISABLE_AUTH=true DATABASE_URL=./data/social-poster.db npm run dev

Audit routes:
/dashboard
/dashboard/posts/create
/dashboard/workspace-settings/social-accounts
/dashboard/pipeline
/dashboard/logs

FreeLLMAPI Add-On

Use this when a learner has no paid model subscription or provider key for Hermes practice.

Install

git clone https://github.com/tashfeenahmed/freellmapi.git
cd freellmapi
npm install
cp .env.example .env
echo "ENCRYPTION_KEY=$(node -e \"console.log(require('crypto').randomBytes(32).toString('hex'))\")" >> .env
npm run dev

Configure Hermes

custom_providers:
  - name: freellmapi
    base_url: http://localhost:3001/v1
    key_env: FREELLMAPI_API_KEY
    model: auto
    api_mode: chat_completions

model:
  default: auto
  provider: custom:freellmapi

Limits

  • Keep it local.
  • Do not expose provider keys.
  • Expect free tier rate limits.
  • Use for lessons, not production decisions.

Sources

Current external docs plus local code and product docs grounded the lesson flow.