geoffsee 2c46e7b2fc Remove Perigon News integration and related SDK components
The Perigon News integration, SDK, and associated tools were removed from the repository. This includes the agent script, API SDK, and OpenAPI definitions for managing news-related operations. The changes simplify the codebase, eliminating unused or outdated dependencies.
2025-05-27 13:11:52 -04:00
2025-05-23 11:25:05 -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 11:40:17 -04:00
2025-05-23 09:48:26 -04:00
2025-05-23 09:48:26 -04:00

open-web-agent-rs

Remote genaiscript host for integration into conversational AI applications.

This application is actively being ported, expect breaking changes.

Disclaimer

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

Features not included in this fork

  • Capabilities API: Reports available agents via HTTP (useful for dynamic intent mapping)

Planned Features

  • Embed Model Context Protocol for client connectivity

Documentation

Comprehensive documentation is available in the docs directory:

Setup

See Installation

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.

Fast Agent Development Workflow

  1. Create script: create a new genaiscript script in packages/genaiscript/genaisrc
  2. Setup a development executor: Map a package script in package.json to the script in step 1 following the existing examples
  3. Iterate until agent is functional.
  4. Follow the guide on adding a new agent to integrate it into the rust server.

License

This project is licensed under the MIT License

FAQ

Q: Why Rust? A: Stronger primitives for STDIO and process management.

Development History (Nov 2024 May 2025)

May 2025

  • Sanitize codebase and cleanup (2025-05-23)

April 2025

  • Replace Perigon integration with SearxNG (2025-04-16)
  • Enable authentication for SearxNG search (2025-04-04)
  • Temporarily remove SearxNG password (2025-04-04)
  • Deploy SearxNG search functionality (2025-04-01)

March 2025

  • Deploy updated search functionality using SearxNG (2025-03-31)
  • Resolve dependency issues and update Docker configuration (2025-03-31)
  • Implement cryptocurrency market data fetching and quoting functionality (2025-03-20)
  • Update AI model configuration (2025-03-20)
  • Fix model provider issue (2025-03-18)
  • Deploy configuration with auto-scaling capabilities (scales to zero) (2025-03-17)

February 2025

  • Add image generation endpoint (2025-02-05)

January 2025

  • Containerize application with Docker and deploy successfully (2025-01-27)
  • Implement request call-count tracking and integrate tracing (tower-http) (2025-01-21)
  • Disable caching mechanism (2025-01-16)
  • Update deployment configuration to use GPT-4o-mini model (2025-01-15)
  • Switch AI model provider back to OpenAI (2025-01-14)

December 2024

  • Refactor database handling and web scraping logic (2024-12-30)
  • Implement robust error handling and retry logic for webhooks (2024-12-29)
  • Add sled database for persistent webhook handling (2024-12-28)
  • Enhance scraping modules and build configurations (2024-12-28)
  • Finalize URL reader implementation (2024-12-27)
  • Upgrade news fetching mechanism and set specific search query provider (2024-12-21, 2024-12-18)
  • Improve news search functionality (date filtering, formatting, error handling) (2024-12-16 to 2024-12-18)
  • Add Perigon integration for news search (2024-12-16)
  • Enhance VM resources and refine search result formatting (2024-12-16)
  • Add stream activity tracking with reconnection handling (2024-12-15)
  • Simplify AI search scripts and improve dependency management (2024-12-10)
  • Update API keys and model configurations for better search reliability (2024-12-07, 2024-12-02)

November 2024

  • Refactor project structure, enhance logging, and initial UI responses (2024-11-28)

Note: Original commit history may be available by request.

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%