Skip to main content

Connect to your favorite services with a singul line of code. Now runable locally.

Project description

Singul Logo

Singul

Connect to anything with a Singul line of code. Now open source (in Beta)!

Usage

Before starting, set the OPENAI_API_KEY environment variable. If you want to use another provider, check out LLM Controls further down for more information.

export OPENAI_API_KEY=key

Examples

CLI

singul --help

# List tickets in the OCSF format
singul list_tickets jira 
singul list_tickets service_now 

# Send mail in the same format
singul send_mail outlook --subject="hoy" --data="hello world" --to="test@example.com"
singul send_mail gmail --subject="hoy" --data="hello world" --to="test@example.com"

Code (python): Local OR Remote

import singul

# List tickets in the OCSF format
tickets = singul.list_tickets("jira")
tickets = singul.list_tickets("service_now")

# Send mail in the same format
send_mail_response = singul.send_mail("outlook", subject="hoy", data="hello world" to="test@example.com")
send_mail_response = singul.send_mail("gmail", subject="hoy", data="hello world" to="test@example.com")

API: singul.io API with curl

# List tickets in the OCSF format
curl https://singul.io/api/list_tickets -d '{"app": "jira"}'
curl https://singul.io/api/list_tickets -d '{"app": "service_now"}'

# Send mail in the same format
curl https://singul.io/api/send_mail -d '{"app": "gmail", "subject": "hoy", data="hello world", to="test@example.com"}'
curl https://singul.io/api/send_mail -d '{"app": "outlook", "subject": "hoy", data="hello world", to="test@example.com"}'

Why Singul

APIs and AI Agents should be easier to use and build. Singul solves both by being easy to use, deterministic and controllable. This reduces the barrier to entry for multi-tool development and allows you to build your own AI agents with ease.

Deterministic because:

  • LLMs can be unpredictable and unreliable
  • Singul stores translations after the first use, and we have a global library for known translations
  • You have full control of all translations
  • It has a source of truth for APIs, and is not "guessing"

Reliable Translations:

  • For your input AND output, we store the format and know how to translate it after successful requests. This is then reusable in subsequent requests
  • Singul ensures all input fields ARE in the request, or fails out. You can modify the relevant files to update the body you want to send if this occurs after up to 5 request failures.

Stable Connections & stored authentication:

  • Singul is based on how we built Shuffle and how we connect to APIs. We use the knowledge of Shuffle, including apps, categories, tags, actions, authentication mechanisms, code and more.

LLM Controls

Set these environment variables to control the behavior of Singul. The AI/LLM section is FOR NOW only supporting the OpenAI format, but we intend to add more in the future to make it work well standalone. Examples of how to change to a different providers with environment variables is:

Other OpenAI compatible API's also work

Environment Variables

REQUIRED:

OPENAI_API_KEY=<key> 	# The API key for the OpenAI API, if you want to use a different provider. Default: None

Singul controls

DEBUG=true 				# Enables debug mode
FILE_LOCATION=./files 	# The location of the files. Default: ./files

# Where to download and control standards from 
GIT_DOWNLOAD_USER=shuffle
GIT_DOWNLOAD_REPO=standards

LLM controls:

MODEL=<model> 			# The model to use for the LLM. We recommend reasoning models. Default: o4-mini
OPENAI_API_URL=<url> 	# The URL of the OpenAI API, if you want to use a different provider. Default: https://api.openai.com/v1/chat/completions
OPENAI_API_ORG=<org> 	# The organization ID for the OpenAI API, if you want to use a different provider. Default: None

Local Test Example

go run *.go create_ticket jira --project=SHUF --title="title2" --content="cool new body here 2"
go run *.go list_tickets jira --max_results=2

How it works

image

image

image

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

singul-0.1.4.tar.gz (3.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

singul-0.1.4-py3-none-any.whl (3.3 kB view details)

Uploaded Python 3

File details

Details for the file singul-0.1.4.tar.gz.

File metadata

  • Download URL: singul-0.1.4.tar.gz
  • Upload date:
  • Size: 3.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.10.10

File hashes

Hashes for singul-0.1.4.tar.gz
Algorithm Hash digest
SHA256 ef13d68d20362148ad7f4e26bd3c7a3dfa102a91c6bc74a9c894bc533039e7e5
MD5 7b486f64bedd539a793afb01acacddcf
BLAKE2b-256 79567cea41c271265a1c6f16b18d8fe6bea85301000e4ed74c71aa74e5b563dd

See more details on using hashes here.

File details

Details for the file singul-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: singul-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 3.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.10.10

File hashes

Hashes for singul-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 6aed80e9cd1b1c2adce405b90865992e03554a3e6505907e84462743d5dba234
MD5 8937b62fd70c4c77cf2332d30eafa992
BLAKE2b-256 7bbcca62be8f46d38b80ff926ba34c08330d42f8b1e069f6713fdc76a4440d8b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page