Skip to content

TypeScript port of Google's Agent Development Kit (ADK): An open-source, code-first toolkit for building, evaluating, and deploying AI agents.

License

Notifications You must be signed in to change notification settings

njraladdin/adk-typescript

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Agent Development Kit (ADK) for TypeScript

License Tests r/agentdevelopmentkit npm monthly downloads

An open-source, code-first TypeScript toolkit for building, evaluating, and deploying sophisticated AI agents with flexibility and control.

Important Links: Docs

⚠️ Unofficial Port & Experimental Status: This is an unofficial TypeScript port of the Google ADK Python library. Currently in alpha - APIs may change.

ADK TypeScript is a code-first framework for building and deploying AI agents. Optimized for Gemini but model-agnostic. Build agents like software: modular, testable, and production-ready.


✨ Key Features

  • Code-First Development: Define agents, tools, and orchestration in TypeScript. Full control, testability, and version management.

  • Rich Tool Ecosystem: Pre-built tools, custom functions, OpenAPI specs. Tight Google ecosystem integration.

  • Multi-Agent Systems: Compose specialized agents into scalable hierarchies.

  • Deploy Anywhere: Cloud Run, Docker, or any platform. Your choice.

  • Developer Tooling: CLI (npx adk), Web UI (npx adk web), graph visualization, and execution inspection.

  • Native Streaming: Bidirectional streaming support via Runner.runLive and LiveRequestQueue.

  • Built-in Evaluation: Test agents with .test.json datasets via npx adk eval.

πŸš€ Installation

Install ADK TypeScript locally in your project:

# Navigate to your project directory
mkdir my-adk-project
cd my-adk-project

# Initialize npm project (creates package.json)
npm init -y

# Install ADK TypeScript and all dependencies
npm install adk-typescript dotenv typescript @types/node @types/dotenv
# or
# yarn add adk-typescript dotenv typescript @types/node @types/dotenv

After installation, use the ADK CLI commands with npx:

# Create a new agent
npx adk create my-new-agent

# Run your agent
npx adk run my-new-agent

This approach ensures that:

  • All dependencies are tracked in your package.json
  • Anyone cloning your project can install everything with a single command
  • Your project will work consistently across development and production environments

See the Installation Guide for more details on setting up your environment.

🎯 Quick Start Example

Here's a simple weather agent to get you started:

// agent.ts
import { LlmAgent } from 'adk-typescript/agents';
import { ToolContext, FunctionTool } from 'adk-typescript/tools';
import { runAgent } from 'adk-typescript';

// Define a tool function - receives params as an object
async function getWeather(
  params: Record<string, any>,
  context: ToolContext
): Promise<{ temperature: string; condition: string }> {
  const city = params.city; // Extract city from params
  // Your weather API logic here
  return {
    temperature: '72Β°F',
    condition: 'Sunny'
  };
}

// Create a tool with explicit function declaration
const getWeatherTool = new FunctionTool({
  name: 'getWeather',
  description: 'Get current weather for a city',
  fn: getWeather,
  functionDeclaration: {
    name: 'getWeather',
    description: 'Get current weather for a city',
    parameters: {
      type: 'object',
      properties: {
        city: {
          type: 'string',
          description: 'Name of the city'
        }
      },
      required: ['city']
    }
  }
});

// Create your agent
export const rootAgent = new LlmAgent({
  name: 'weather_agent',
  model: 'gemini-2.0-flash',
  description: 'A helpful weather assistant',
  instruction: 'You help users get weather information. Use the getWeather tool when asked about weather.',
  tools: [getWeatherTool],
});

// Run programmatically (optional)
if (require.main === module) {
  runAgent(rootAgent).catch(console.error);
}

Run your agent:

# Via CLI (interactive chat)
npx adk run .

# Or run directly with Node/ts-node
npx ts-node agent.ts

πŸ“š Documentation

Our TypeScript-specific documentation is available at https://njraladdin.github.io/adk-typescript/.

Please be aware that the documentation is a work in progress and may not be perfectly accurate yet. For conceptual information, you may still refer to the official Python ADK documentation, but be aware of implementation differences.

βš™οΈ Using the CLI (npx adk)

The ADK TypeScript CLI provides commands to manage and run your agents:

1. Create a New Agent Project:

Generates a starter agent template with necessary files (agent.ts, package.json, tsconfig.json, .env).

npx adk create <your-agent-name>
# Example: npx adk create my_weather_agent

Follow the interactive prompts to configure the model and backend.

2. Run an Agent Interactively (Terminal):

Starts a command-line chat interface to interact with your agent.

# Navigate to the parent directory of your agent folder
npx adk run <your_agent_folder_name>
# Example: npx adk run my_weather_agent

# Or navigate into the agent folder and run:
cd my_weather_agent
npx adk run .

3. Run the Development Web UI:

Starts a local web server with a chat UI for testing and inspecting agent behavior.

# Navigate to the parent directory of your agent folder(s)
npx adk web <your_agent_folder_name>
# Example: npx adk web my_weather_agent

# Or run from inside the agent folder:
cd my_weather_agent
npx adk web .

Access the UI in your browser (usually http://localhost:3000).

4. Run the API Server:

Starts a local Express.js server exposing REST endpoints to interact with your agent(s) programmatically. Useful for integration testing.

# Navigate to the parent directory of your agent folder(s)
npx adk api_server --agent_dir <your_agent_folder_name_or_parent_dir>
# Example (serving one agent): npx adk api_server --agent_dir my_weather_agent
# Example (serving all agents in current dir): npx adk api_server --agent_dir .

5. Evaluate an Agent:

Runs evaluations based on predefined datasets (.test.json files).

npx adk eval <path_to_agent_folder> <path_to_eval_set.test.json>
# Example:
# npx adk eval ./my_weather_agent ./my_weather_agent/eval_data.test.json

6. Generate Agent Graph:

Creates a visual representation of your agent and its tools/sub-agents (requires Graphviz installed).

npx adk graph <path_to_agent_folder> --output graph.png
# Example: npx adk graph ./my_weather_agent --output weather_agent_graph.png

7. Deploy to Cloud Run:

Packages and deploys your agent to Google Cloud Run.

npx adk deploy cloud_run <path_to_agent_folder> --project <your-gcp-project> --region <gcp-region> --service_name <your-service-name>

🀝 Contributing

Contributions welcome! This is a community-driven port. Bug reports, features, docs, and code all appreciated. See Contributing Guidelines.

πŸ“„ License

This project is licensed under the Apache 2.0 License - see the LICENSE file for details.

Preview

This software (ADK TypeScript Port) is currently experimental (alpha) and not an officially supported Google product. It is subject to the "Pre-GA Offerings Terms" in the General Service Terms section of the Service Specific Terms. Pre-GA features are available "as is" and might have limited support. For more information, see the launch stage descriptions.


Happy Agent Building with TypeScript!

About

TypeScript port of Google's Agent Development Kit (ADK): An open-source, code-first toolkit for building, evaluating, and deploying AI agents.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published