geoffsee c40e487aba Add setup section to README and clean up license formatting
Added a "Setup" section with a link to installation instructions in the README for improved usability. Also adjusted the license text for consistency and deleted the empty `gitleaks-report.json` file as it was unnecessary.
2025-05-23 11:01:51 -04:00
2025-05-23 09:48:26 -04:00
2025-05-23 09:48:26 -04:00
2025-05-23 09:48:26 -04:00
2025-05-23 09:48:26 -04:00
2025-05-23 09:48:26 -04:00
2025-05-23 09:48:26 -04:00
2025-05-23 09:48:26 -04:00
2025-05-23 09:48:26 -04:00
2025-05-23 09:48:26 -04:00
2025-05-23 09:48:26 -04:00
2025-05-23 09:48:26 -04:00
2025-05-23 09:48:26 -04:00
2025-05-23 09:48:26 -04:00
2025-05-23 09:48:26 -04:00
2025-05-23 09:48:26 -04:00
2025-05-23 09:48:26 -04:00
2025-05-23 09:48:26 -04:00
2025-05-23 09:48:26 -04:00
2025-05-23 09:48:26 -04:00
2025-05-23 09:48:26 -04:00

web-agent-rs

Remote genaiscript host for integration into conversational AI applications.

This project is actively being developed to suit more use-cases, expect breaking changes.

Setup

See Installation

Disclaimer

This has not undergone a formal security assessment. You should do your own evaluation before using this.

How it works

  1. A chat client specifies the URL to this host in their environment.
  2. They send a request with their credentials to create a stream resource

Adding New Agents

This project allows you to create and integrate new agents that can perform various tasks. Here's how to add a new agent:

1. Create a GenAIScript File

Create a new .genai.mts file in the packages/genaiscript/genaisrc/ directory. This file will contain the agent's logic.

Example structure of a GenAIScript file:

import {SomeClient} from "@agentic/some-package";
import "./tools/some-tool.genai.mjs"

script({
    title: "your_agent_name",
    maxTokens: 8192,
    cache: false,
    tools: ["tool-name"],
});

def("USER_INPUT", env.vars.user_input);

$`You are an assistant that performs a specific task.
- Instruction 1
- Instruction 2
- Instruction 3`

2. Create a Rust Agent Function

Create a new Rust file in the src/agents/ directory or add a function to an existing file. This function will be a wrapper that calls the GenAIScript file.

Example agent function:

use tokio::process::Child;
use tracing;

use crate::utils::utils::run_agent;

pub async fn your_agent_name(stream_id: &str, input: &str) -> Result<Child, String> {
    run_agent(stream_id, input, "./packages/genaiscript/genaisrc/your-agent.genai.mts").await
}

3. Register the Agent in the Module

Add your agent to the src/agents/mod.rs file:

pub mod your_agent_name;

4. Register the Agent in the Webhook Handler

Add your agent to the match statement in the handle_webhooks function in src/handlers/webhooks.rs:

// In the handle_webhooks function
let cmd = match resource.as_str() {
    "web-search" => search_agent(stream_id.as_str(), &*input).await,
    "news-search" => news_agent(stream_id.as_str(), &*input).await,
    // Add your agent here
    "your-resource-name" => your_agent_name(stream_id.as_str(), &*input).await,
    _ => {
        tracing::error!("Unsupported resource type: {}", resource);
        return StatusCode::BAD_REQUEST.into_response();
    }
};

5. Configure Environment Variables

If your agent requires specific API keys or configuration, add them to the ShimBinding struct in src/utils/utils.rs.

Existing Agents

The project currently includes the following agents:

  • Web Search: Performs web searches using SearxNG
  • News Search: Searches for news articles
  • Image Generator: Generates images based on text prompts
  • Finance Query: Provides financial information
  • Web Scrape: Scrapes content from web pages

Documentation

Comprehensive documentation is available in the docs directory:

License

This project is licensed under the MIT License

Description
mcp-server with embedded inference, searxng, and genaiscript
Readme MIT 678 KiB
Languages
Rust 73.4%
TypeScript 10.6%
HTML 7.2%
JavaScript 5.3%
Dockerfile 3.1%
Other 0.4%