Giter VIP home page Giter VIP logo

magick's Introduction

Join Discord Follow on Twitter Follow on LinkedIn Subscribe on YouTube

Magick is a groundbreaking visual AIDE (Artificial Intelligence Development Environment) for no-code data pipelines and multimodal agents. Magick can connect to other services and comes with nodes and templates well-suited for intelligent agents, chatbots, complex reasoning systems and realistic characters.

šŸ— Key Features

  • Realtime agents which can perform actions on their own, interact with users and other agents in different modalities with a unified memory and self
  • Social connectors to Discord, Twitter and Twilio -- Zoom, Google Meet, Reddit, Slack connectors will be available soon as plugins!
  • Search Google, Wikipedia and the Semantic Web
  • Many included powertools, including voice and image generation and vector search
  • Powerful graph-based IDE for complex data pipelines
  • Graphs can be embedded in subgraphs and shared for rapid community development

šŸ”® Magick: Enchanting AI App Development Made Easy

With Magick, you can unleash the power of AI without needing to know how to code. Using our intuitive environment, you can seamlessly connect to popular services and explore a world of pre-built nodes and connectors to bring your vision to life.

Powerful enough for wizards. Easy enough for mere mortals.

Magick - AI for Mere Mortals
ā–¶ļø Click the image above to watch the video


Installation

Local development is straightforward. You will need git and node.js 18+ installed.

git clone https://github.com/Oneirocom/Magick
cd Magick
npm install
npm run dev

Setup

First, clone and set up Magick

git clone https://github.com/Oneirocom/Magick
cd Magick
npm install

Run Magick!

npm run dev

Note: Installation is automatic. Most Node projects require npm install - With Magick, dependencies will automatically be installed for you. Linux users may need to enter sudo password to install some dependencies.

Build

Build will take some time initially. When everything is ready, the client will be ready at localhost:4200

Please be aware Magick is under heavy development which may cause breaking changes.

Database

Magick installs mydb.sqlite by default. This is a local sqlite database. It is not recommended for production use, but is fine for development. Database can be wiped by breaking changes, back up your spells via export regularly.

Local Sqlite Installation:

If you want to set up a custom sqlite database, add a relative or absolute path to your sqlite file in the .env file Next migrate to the new database by running:

npm run migrate

Deploy your own Postgres database

To deploy your own database, we suggest using Supabase or another Postgres database. The current setup for events and documents requires the pgvector extension to be enabled.

The following documents should help you with setup:

Initialize a new database

Magick uses Feathers 5 for backend, which in turn uses Knex for making database queries. We will offer a better database configuration experience in the future. For now, you will need to manually configure the database connection in the .env file and then run the migration script.

cd apps/server
npm run migrate

Self signed certificates

Developing locally, it can be very helpful to have google chrome accept all self signed cetificates coming from localhost. To do this, simply paste the following snippet into chromes URL bar and enable the feature:

chrome://flags/#allow-insecure-localhost

Core Concepts

Spells

A spell is a pipeline that describes data moivng from one place to another, running through different processes we call "nodes", via wires we call "connections". In Magick, the collection of data, nodes, variables, and presets for each graph is known as a "spell". Spell is not a machine learning term. We just like it. Spells can be imported and exported at any time. Spells in their raw form are JSON, a standard format that is easy to share.

Nodes

At the core, Magick is a system for taking in data, doing stuff to it, and then sending the final data out. This "stuff" is called a "transformation", the data transforms from one thing into the next. The "stuff" that is happening to the data is a black box that takes something in, anything, and returns something out. We call the black box where the transformstion takes place a "node". Nodes are the building blocks of Magick.

Creating Nodes

Nodes are created in the composer window of the "Spells" tab. You can right-click in the composer and add nodes from the context menu. You can also drag and drop nodes from the "Nodes" tab into the composer. Nodes can be dragged and dropped around the composer to re-arrange them. Nodes can be deleted by right-clicking on them and selecting "Delete".

Node Types

  • Input Node
  • Prompt Template
  • Code Node: Lets you define both inputs and outputs.
  • Generator Node: Lets you define your own input sockets and then work with that data inside of the node.
  • Wait For All Node: Used to wait for different execution branches to complete before joining back into a single branch -- this is a good way to do several slow tasks at once.

Inputs and Outputs

All nodes have some inputs and/or outputs, although they don't necessarily have to have both. Inputs and outputs are visually displayed as sockets. The color of the socket determines the type of data it can receive, with "gray" being the default untyped or "any" type.

Sockets

Data passed into sockets is available to the node, it can process that data, do something to it, and return the result to the output socket. Some nodes (like Generator node) let you define your own input sockets and then work with that data inside of the node. Some nodes (like the Code node) let you define both inputs and outputs.

Triggers

Triggers tell nodes to start asynchronous tasks. Some nodes can process data without needing a trigger, but most nodes need triggers. Triggers can be emitted from one socket out to more than one input, however the order of execution is not guaranteed. You can use the "Wait For All" node to wait for different execution branches to complete before joining back into a single branch -- this is a good way to do several slow tasks at once

Contributors

All Contributors

Michael
Michael

šŸ’» šŸ“¦ šŸ’¼
MĢµĶĢ…ĢĢŽĢžĢ—ĢĢ¼OĢ“Ģ‡ĢŠĢƒĢ‹Ģ€ĢĢ»OĢ·ĢƒĶ‹Ģ¼NĢøĢæĶœĢ© Ģ¶Ķ’ĢœĢ Ģ¹Ģ¼Ģ©
MĢµĶĢ…ĢĢŽĢžĢ—ĢĢ¼OĢ“Ģ‡ĢŠĢƒĢ‹Ģ€ĢĢ»OĢ·ĢƒĶ‹Ģ¼NĢøĢæĶœĢ© Ģ¶Ķ’ĢœĢ Ģ¹Ģ¼Ģ©

šŸ’» šŸ“¦
alextitonis
alextitonis

šŸ’»
Daniel Adams
Daniel Adams

šŸ’»
Anthony Burchell
Anthony Burchell

šŸ’» šŸ“
jin
jin

šŸ“
Shivaditya Shivganesh
Shivaditya Shivganesh

šŸ’»
khalildh
khalildh

šŸ’»
Pigloo
Pigloo

šŸ’»
avirtualfuture
avirtualfuture

šŸ’» šŸ“–
Alexandre Ferreira
Alexandre Ferreira

šŸ’»
Matei Anghel
Matei Anghel

šŸ’»
Trentalantar
Trentalantar

šŸ“–
Lisa Mega Watts
Lisa Mega Watts

šŸ“–
r2
r2

šŸ“–
IRANKUNDA Fabrice
IRANKUNDA Fabrice

šŸ’»
Kien Nguyen
Kien Nguyen

šŸ’»
Ben Moore
Ben Moore

šŸ’»
Q
Q

šŸ’»
thomageanderson
thomageanderson

šŸ’»
codingsh
codingsh

šŸ’»
Pietro
Pietro

šŸ’»

Based on Thoth by Latitude Games

The original source code was made by the following contributors to Thoth, which is archived here

Jakob
Jakob

šŸ’»
Sean Gillespie
Sean Gillespie

šŸ’»
Michael
Michael

šŸ’»
Preston Gull
Preston Gull

šŸ’»šŸŽØ
Nick Walton
Nick Walton

šŸ’»
Mitchell Gordon
Mitchell Gordon

šŸ’»
?/janus
?/janus

šŸ’»
Alan Walton
Alan Walton

šŸ’»

Come Build With Us!

We are building Magick as a community in the open on Discord. If you are interested in contributing to the project, we'd love to have you.

Join us here: https://discord.gg/magickml

magick's People

Contributors

lalalune avatar michaelsharpe avatar fabriceirankunda avatar sshivaditya2019 avatar thomageanderson avatar allcontributors[bot] avatar pizzooid avatar sshivaditya avatar coffeeorgreentea avatar alexjorgef avatar bmo-tech avatar developerfred avatar trentalantar avatar stackedq avatar knar33 avatar 0xpetra avatar khalildh avatar xrpro avatar fire avatar peponpylon avatar davincidreams avatar antpb avatar avirtualfuture avatar pigloo avatar msub2 avatar zerefwth avatar rishav1707 avatar rjphnx avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    šŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. šŸ“ŠšŸ“ˆšŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ā¤ļø Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.