This repo is the TypeScript implementation of the Render Ops Agent workshop.
- The facilitated path is TypeScript.
mainis the completed reference implementation.startershould be a separate branch with TODOs for the live workshop.- A future Python repo can mirror this architecture, but do not mix Python into this repo.
ops-agentis a Hono web service that runs the agent.ops-targetis a seeded target service for inspection.- Postgres stores run history and finding memory.
- The TUI calls
POST /runonAGENT_URL. - Render API access must stay read-only. Keep the GET-only guard in
agent/render-api.ts.
.envis ignored and must never be committed.npm run devloads.envif it exists.npm run tuiloads.envif it exists.DATABASE_URLis optional locally. Without it, the agent runs without memory.- If
DATABASE_URLis set locally, runnpm run db:migrate:local.
- Always validate
render.yamlafter changing it:
render blueprints validate- The Blueprint should stay project-scoped under
projects. - Keep
DATABASE_URLwired withfromDatabase. - Keep migrations in
preDeployCommand.
- The TUI should stay useful but not become the workshop focus.
- Use
@assistant-ui/react-ink-markdownfor agent reply markdown rendering. - Do not hand-roll a markdown parser.
- The TUI should show live run progress events, not private model reasoning.
- Keep user prompts visible in history.
- Agent replies should not use emoji.
- The prompt should encourage valid Markdown with blank lines between headings, paragraphs, and lists.
- Do not tell the model to expose chain-of-thought or private reasoning.
- Do not commit unless the user explicitly asks.
- When asked to commit, keep commits small and focused.
- Do not commit
.env, credentials, or local build artifacts.