ironclad / rivet Goto Github PK
View Code? Open in Web Editor NEWThe open-source visual AI programming environment and TypeScript library
Home Page: https://rivet.ironcladapp.com
License: MIT License
The open-source visual AI programming environment and TypeScript library
Home Page: https://rivet.ironcladapp.com
License: MIT License
This Git repo is huge. It currently weighs 713 MB, with only 16 MB of code and assets.
Most of the size is due to cache and bin directories, and the Git objects (.git/objects/pack/pack-*.idx
) that version them:
.yarn/
packages/app-executor/bin/
packages/app-executor/dist/
packages/docs/.yarn/
packages/cli/bin/
packages/python/
...
Is there any use in versioning them?
To remove the extraneous objects from Git:
Command to find them:
for hash in $(git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -n | tail -10 | awk '{print $1}'); do git rev-list --all --objects | grep $hash; done
Command to remove them safely:
git filter-repo --invert-paths --path .yarn/ --path packages/app-executor/bin/ --path packages/app-executor/dist/ --path packages/docs/.yarn/ --path packages/cli/bin/ --path packages/python/ [...]
(From https://github.com/newren/git-filter-repo/)
I was able to reduce the repo to 44 M.
You won't have to recommend your users to clone it with git clone --filter=blob:none
anymore.
I can't use the GUI, everything disappear once I select an action - and an error message shows in the interface: Failed to render GraphBuilder
The plain UI to be visible, action created to be visible and not blurred, right-clic to work as well.
Ubuntu v23.04
Yarn v4.0.0-rc.45
node v20.6.1
npm v9.8.1
react v18.2.0
/rivet$ yarn
➤ YN0000: ┌ Project validation
➤ YN0057: │ @ironclad/rivet-app: Resolutions field will be ignored
➤ YN0000: └ Completed
➤ YN0000: ┌ Resolution step
➤ YN0002: │ @algolia/autocomplete-core@npm:1.9.3 doesn't provide @algolia/client-search (pbc410), requested by @algolia/autocomplete-shared
➤ YN0002: │ @algolia/autocomplete-core@npm:1.9.3 doesn't provide algoliasearch (p8ad5b), requested by @algolia/autocomplete-shared
➤ YN0002: │ @algolia/autocomplete-core@npm:1.9.3 doesn't provide search-insights (pfdb70), requested by @algolia/autocomplete-plugin-algolia-insights
➤ YN0002: │ @algolia/autocomplete-plugin-algolia-insights@npm:1.9.3 [e43f4] doesn't provide @algolia/client-search (pdf3b9), requested by @algolia/autocomplete-shared
➤ YN0002: │ @algolia/autocomplete-plugin-algolia-insights@npm:1.9.3 [e43f4] doesn't provide algoliasearch (p0f6bb), requested by @algolia/autocomplete-shared
➤ YN0002: │ @atlaskit/modal-dialog@npm:12.6.9 [388c2] doesn't provide react-dom (pa1855), requested by @atlaskit/portal
➤ YN0002: │ @atlaskit/popper@npm:5.5.4 [9ee97] doesn't provide react-dom (p9dacd), requested by react-popper
➤ YN0002: │ @atlaskit/side-navigation@npm:2.0.4 [388c2] doesn't provide react-dom (p5f5ce), requested by @atlaskit/menu
➤ YN0002: │ @docsearch/react@npm:3.5.2 [45935] doesn't provide @algolia/client-search (p8cbb4), requested by @algolia/autocomplete-preset-algolia
➤ YN0002: │ @ironclad/rivet-app@workspace:packages/app doesn't provide @typescript-eslint/parser (p52c17), requested by @typescript-eslint/eslint-plugin
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (p0d8ba) with version 18.2.0, which doesn't satisfy what @atlaskit/tokens requests
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (p09bd4) with version 18.2.0, which doesn't satisfy what @atlaskit/theme requests
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (p47042) with version 18.2.0, which doesn't satisfy what @atlaskit/icon requests
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (p6c641) with version 18.2.0, which doesn't satisfy what @atlaskit/button and some of its descendants request
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (p613bc) with version 18.2.0, which doesn't satisfy what @atlaskit/menu requests
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (p57ddd) with version 18.2.0, which doesn't satisfy what @atlaskit/popup requests
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (p010de) with version 18.2.0, which doesn't satisfy what @atlaskit/form and some of its descendants request
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (p664cc) with version 18.2.0, which doesn't satisfy what @atlaskit/textfield requests
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (pbeed5) with version 18.2.0, which doesn't satisfy what @atlaskit/portal requests
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (p12a65) with version 18.2.0, which doesn't satisfy what @atlaskit/banner and some of its descendants request
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (p9cf70) with version 18.2.0, which doesn't satisfy what @atlaskit/checkbox requests
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (pb1f52) with version 18.2.0, which doesn't satisfy what @atlaskit/css-reset requests
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (p00d1e) with version 18.2.0, which doesn't satisfy what @atlaskit/dropdown-menu requests
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (pc6d35) with version 18.2.0, which doesn't satisfy what @atlaskit/inline-edit and some of its descendants request
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (p720fb) with version 18.2.0, which doesn't satisfy what @atlaskit/modal-dialog and some of its descendants request
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (p8de0e) with version 18.2.0, which doesn't satisfy what @atlaskit/select and some of its descendants request
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (pd7499) with version 18.2.0, which doesn't satisfy what @atlaskit/side-navigation and some of its descendants request
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (p69491) with version 18.2.0, which doesn't satisfy what @atlaskit/tabs requests
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (p5c2ae) with version 18.2.0, which doesn't satisfy what @atlaskit/textarea requests
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (p23a63) with version 18.2.0, which doesn't satisfy what @atlaskit/toggle requests
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react-dom (pe223a) with version 18.2.0, which doesn't satisfy what @atlaskit/menu requests
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react-dom (pea2fd) with version 18.2.0, which doesn't satisfy what @atlaskit/popup requests
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react-dom (p39d52) with version 18.2.0, which doesn't satisfy what @atlaskit/portal requests
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react-dom (pa1f4f) with version 18.2.0, which doesn't satisfy what @atlaskit/dropdown-menu requests
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react-dom (p51537) with version 18.2.0, which doesn't satisfy what @atlaskit/select and some of its descendants request
➤ YN0002: │ @ironclad/rivet-core@workspace:packages/core doesn't provide @types/node (p2a077), requested by ts-node
➤ YN0002: │ @ironclad/rivet-core@workspace:packages/core doesn't provide @typescript-eslint/parser (pcafdb), requested by @typescript-eslint/eslint-plugin
➤ YN0002: │ @ironclad/rivet-node@workspace:packages/node doesn't provide @typescript-eslint/parser (p5d7b8), requested by @typescript-eslint/eslint-plugin
➤ YN0002: │ @ironclad/rivet@workspace:. doesn't provide @typescript-eslint/parser (p14739), requested by @typescript-eslint/eslint-plugin
➤ YN0002: │ @ironclad/trivet@workspace:packages/trivet doesn't provide @typescript-eslint/parser (pc3af5), requested by @typescript-eslint/eslint-plugin
➤ YN0060: │ docs@workspace:packages/docs provides react (p4e1cc) with version 18.2.0, which doesn't satisfy what @docusaurus/types requests
➤ YN0060: │ docs@workspace:packages/docs provides react (p9d5e3) with version 18.2.0, which doesn't satisfy what @docusaurus/core and some of its descendants request
➤ YN0060: │ docs@workspace:packages/docs provides react (p1334f) with version 18.2.0, which doesn't satisfy what @mdx-js/react requests
➤ YN0060: │ docs@workspace:packages/docs provides react (p0e283) with version 18.2.0, which doesn't satisfy what @docusaurus/preset-classic and some of its descendants request
➤ YN0060: │ docs@workspace:packages/docs provides react-dom (p1a640) with version 18.2.0, which doesn't satisfy what @docusaurus/types requests
➤ YN0060: │ docs@workspace:packages/docs provides react-dom (p47f6f) with version 18.2.0, which doesn't satisfy what @docusaurus/core and some of its descendants request
➤ YN0060: │ docs@workspace:packages/docs provides react-dom (p45133) with version 18.2.0, which doesn't satisfy what @docusaurus/preset-classic and some of its descendants request
➤ YN0002: │ eslint-config-react-app@npm:7.0.1 [388c2] doesn't provide @babel/plugin-syntax-flow (p32599), requested by eslint-plugin-flowtype
➤ YN0002: │ eslint-config-react-app@npm:7.0.1 [388c2] doesn't provide @babel/plugin-transform-react-jsx (pff2ca), requested by eslint-plugin-flowtype
➤ YN0000: │ Some peer dependencies are incorrectly met; run yarn explain peer-requirements <hash> for details, where <hash> is the six-letter p-prefixed code
➤ YN0000: └ Completed in 0s 298ms
➤ YN0000: ┌ Fetch step
➤ YN0000: └ Completed in 0s 331ms
➤ YN0000: ┌ Link step
➤ YN0000: └ Completed in 0s 502ms
➤ YN0000: Done with warnings in 1s 215ms
/rivet$ yarn dev
Bundling to bin/executor-bundle.js...
Compiling to native binary for linux...
> [email protected]
> Warning Cannot resolve 'config.extends'
rivet/packages/app-executor/bin/executor-bundle.js
Dynamic require may fail at run time, because the requested file
is unknown at compilation time and not included into executable.
Use a string literal as an argument for 'require', or leave it
as is and specify the resolved file name in 'scripts' option.
> Warning Cannot resolve 'path2'
/rivet/packages/app-executor/bin/executor-bundle.js
Dynamic require may fail at run time, because the requested file
is unknown at compilation time and not included into executable.
Use a string literal as an argument for 'require', or leave it
as is and specify the resolved file name in 'scripts' option.
Copied dist/rivet-app-executor to dist/app-executor-x86_64-unknown-linux-gnu for tauri sidecar
Running BeforeDevCommand (`yarn start`)
VITE v4.4.9 ready in 390 ms
➜ Local: http://localhost:5173/
➜ Network: use --host to expose
Info Watching /rivet/packages/app/src-tauri for changes...
Compiling glib-sys v0.15.10
Compiling gobject-sys v0.15.10
Compiling gdk-sys v0.15.1
Compiling gio-sys v0.15.10
Compiling atk-sys v0.15.1
Compiling cairo-sys-rs v0.15.1
Compiling pango-sys v0.15.10
Compiling gdk-pixbuf-sys v0.15.10
Compiling soup2-sys v0.2.0
Compiling openssl-sys v0.9.91
Compiling javascriptcore-rs-sys v0.4.0
Compiling x11-dl v2.21.0
Compiling app v0.1.0 (/rivet/packages/app/src-tauri)
Compiling openssl v0.10.56
Compiling native-tls v0.2.11
Compiling gtk-sys v0.15.3
Compiling gdkx11-sys v0.15.1
Compiling tao v0.16.2
Compiling gtk v0.15.5
Compiling webkit2gtk-sys v0.18.0
Compiling rfd v0.10.0
Compiling wry v0.24.3
Compiling glib v0.15.12
Compiling gdkwayland-sys v0.15.3
Compiling tokio-native-tls v0.3.1
Compiling hyper-tls v0.5.0
Compiling reqwest v0.11.19
Compiling gio v0.15.12
Compiling cairo-rs v0.15.12
Compiling pango v0.15.10
Compiling atk v0.15.1
Compiling javascriptcore-rs v0.16.0
Compiling gdk-pixbuf v0.15.11
Compiling soup2 v0.2.1
Compiling gdk v0.15.4
Compiling webkit2gtk v0.18.2
Compiling tauri-runtime v0.14.0
Compiling tauri-runtime-wry v0.14.0
Compiling tauri v1.4.1
Compiling tauri-plugin-persisted-scope v0.1.0 (https://github.com/tauri-apps/plugins-workspace?branch=dev#dce0f02b)
Compiling tauri-plugin-window-state v0.1.0 (https://github.com/tauri-apps/plugins-workspace?branch=v1#6647e6ea)
Finished dev [unoptimized + debuginfo] target(s) in 1m 01s
10:04:54 PM [vite] warning:
/rivet/packages/app/src/hooks/useProjectPlugins.ts
27 | throw new Error(`Unknown built-in plugin ${name}.`);
28 | }).with({ type: "uri" }, async (spec2) => {
29 | const plugin = (await import(spec2.uri)).default;
| ^
30 | if (!plugin?.id) {
31 | throw new Error(`Plugin ${spec2.id} does not have an id`);
The above dynamic import cannot be analyzed by Vite.
See https://github.com/rollup/plugins/tree/master/packages/dynamic-import-vars#limitations for supported dynamic import formats. If this is intended to be left as-is, you can use the /* @vite-ignore */ comment inside the import() call to suppress this warning.
Plugin: vite:import-analysis
File: /rivet/packages/app/src/hooks/useProjectPlugins.ts
Easy to reproduce when loading an 11mb json file in a read file node
Should perform smoothly
MacOS Ventura
No response
No response
Might have to write some rust watcher code? Might be a tauri plugin already.
When opening the pre-built package for Mac, the UI shows up empty and does not respond to any of the menu items.
Happy to follow-up with more info if there's additional context that's needed.
Older tags also experience this (0.3.0, 0.2.0)
Either some UI elements appear to enable creating a new project/graph, or a response in the menus (e.g. being able to select options and configure API key, etc.)
No response
I'm trying to run rivet_1.1.0_amd64.AppImage. It starts but prints these errors on the console:
/usr/lib/x86_64-linux-gnu/gio/modules/libgiolibproxy.so: undefined symbol: g_uri_is_valid Failed to load module: /usr/lib/x86_64-linux-gnu/gio/modules/libgiolibproxy.so /usr/lib/x86_64-linux-gnu/gvfs/libgvfscommon.so: undefined symbol: g_task_set_static_name Failed to load module: /usr/lib/x86_64-linux-gnu/gio/modules/libgioremote-volume-monitor.so /usr/lib/x86_64-linux-gnu/gio/modules/libgiognomeproxy.so: undefined symbol: g_uri_is_valid Failed to load module: /usr/lib/x86_64-linux-gnu/gio/modules/libgiognomeproxy.so /usr/lib/x86_64-linux-gnu/gvfs/libgvfscommon.so: undefined symbol: g_task_set_static_name Failed to load module: /usr/lib/x86_64-linux-gnu/gio/modules/libgvfsdbus.so /usr/lib/x86_64-linux-gnu/gio/modules/libgiolibproxy.so: undefined symbol: g_uri_is_valid Failed to load module: /usr/lib/x86_64-linux-gnu/gio/modules/libgiolibproxy.so /usr/lib/x86_64-linux-gnu/gvfs/libgvfscommon.so: undefined symbol: g_task_set_static_name Failed to load module: /usr/lib/x86_64-linux-gnu/gio/modules/libgioremote-volume-monitor.so /usr/lib/x86_64-linux-gnu/gio/modules/libgiognomeproxy.so: undefined symbol: g_uri_is_valid Failed to load module: /usr/lib/x86_64-linux-gnu/gio/modules/libgiognomeproxy.so /usr/lib/x86_64-linux-gnu/gvfs/libgvfscommon.so: undefined symbol: g_task_set_static_name Failed to load module: /usr/lib/x86_64-linux-gnu/gio/modules/libgvfsdbus.so /usr/lib/x86_64-linux-gnu/gio/modules/libgiolibproxy.so: undefined symbol: g_uri_is_valid Failed to load module: /usr/lib/x86_64-linux-gnu/gio/modules/libgiolibproxy.so /usr/lib/x86_64-linux-gnu/gvfs/libgvfscommon.so: undefined symbol: g_task_set_static_name Failed to load module: /usr/lib/x86_64-linux-gnu/gio/modules/libgioremote-volume-monitor.so /usr/lib/x86_64-linux-gnu/gio/modules/libgiognomeproxy.so: undefined symbol: g_uri_is_valid Failed to load module: /usr/lib/x86_64-linux-gnu/gio/modules/libgiognomeproxy.so /usr/lib/x86_64-linux-gnu/gvfs/libgvfscommon.so: undefined symbol: g_task_set_static_name Failed to load module: /usr/lib/x86_64-linux-gnu/gio/modules/libgvfsdbus.so
Then, the application has problems showing labels (see screenshot)
All labels should be visibles
Ubuntu 23.04
libwebkitgtk-6.0 2.40.5
No response
Right now plugins are only core plugins that work both in the UI and in the packages. We'll need to introduce a UI plugin as well that can extend the Rivet UI itself.
There are many publicly available models that we can run for free on our own hardware.
Example: TheBloke/Llama-2-13B-chat-GPTQ
How to execute the Chat in Rivet on these models?
To see implementation refer to this project, where we can use it locally today: https://github.com/oobabooga/text-generation-webui
Clicking play recording after playing one already doesn't do anything.
Thought I fixed this
Mac OS
No response
No response
Easy to lose changes right now.
Also should include unsaved changes asterisk in the title of the window.
Documentation site should include a guide or pointers on what node packages to import and how to get started with using Rivet embedded into your application.
I get a CORS error when I send an HTTP request (same error from browser or Node.js).
[Error] Origin tauri://localhost is not allowed by Access-Control-Allow-Origin. Status code: 204
[Error] Fetch API cannot load https://api-prod.omnivore.app/api/graphql due to access control checks.
The same query works from Postman and curl.
The server probably rejects "origin: tauri://localhost".
(I tested with https://mockbin.com that this is not this bug: tauri-apps/tauri#2327);
See also #28
HTTP
Kubuntu 23.04
rivet_1.2.1_amd64.AppImage
No response
No response
Broke when the near-connection work was done.
Also want to allow connecting from output to input.
When you rename an input port, and it's connected to something, then rivet gets pretty glitchy with the wires.
It should disconnect any invalid input when any names change.
MacOS
No response
No response
Whenever I open my project for the first time, the plugins are not loaded. Can the used plugins be stored inside the project (without sensitive settings), so it will be enabled when we open the project again?
The plugins should remain enabled if I enabled them before for a project.
MacOS, Node v20.5.1
No response
No response
Would help me find nodes of importance much faster if each type were a distinct color
drag/drop should work
MacOS
No response
See screenshot, reproducible by clicking the test cases button in the sidepanel
I expected the opaque background to appear in the sidepanel as well as the remote debugging button to not overlap with the testcases button
MacOS, Node 14.0.0, etc.
No response
The new HTTP request node is only available on main, however the workflow involves running Rivet through a browser where the browser executor will run into CORS issues very commonly.
The node executor doesn't seem like it's available when running from source, and I couldn't find any information about that or how to make builds.
One file per graph, one file per test suite I think. Probably a configurable option in the project panel, because keeping everything in one file definitely has its benefits.
A bug happened!
Rivet did not work as expected!
MacOS, Node 14.0.0, etc.
No response
No response
When you start rivet, open a modal that gives you the option to choose your recent projects, open example projects, click new project
Some models can be more easily accessed through Azure.
I'm working on a practical use case: taking a saved Cody transcript and trying to "replay" it with some modifications. This is typical for our prompt development and testing; to date I do this in Python.
Inputs are JSON, and typically we want to take params.messages
which is [{speaker: 'human' : 'assistant', text: string}]
, modify the trailing message or two, serialize it to a prompt for Anthropic Claude, and prompt the LLM with that.
It appears the array handling capabilities of Rivet aren't up to this kind of task? It seems if Extract Object Path produces an array match, then piping this into an Extract Object Path object to select "speaker" isn't lifted over the elements in the array. That is, I can select "length" and not
Similarly for a node with multiple inputs, it would be nice to take multiple independent arrays and "zip" them with the node as a constructor.
I attempted simply rendering a prompt without any changes and even this workflow seemed involved enough that it would be nice to have recursive "boxes" that I could zoom out of and reuse as functions.
It would be great to support JSON/YAML/Markdown formatting available via a toggle, for example when manually viewing AI output
Add the optional Base URL feature
Highly desirable feature, but will need a bunch of work to refactor how the state is recorded.
Nodes become immediately invisible after adding them (regardless of the node type). They only appear briefly (< 1 second) on mouse-over, and then become invisible again.
If I manage to move a node below the left sidebar, it appears permanently (but blurred).
Also, the text of the tabs of the settings modal is invisible ("general", "OpenAI", "plugins" according to the doc). Same for the text of the items of the context menu of the left sidebar.
Feel free to ask me technical questions or suggest technical procedures: I'm a web developer.
Nodes should be visible.
Kubuntu 23.04
Node.js v20.6.1
https://github.com/Ironclad/rivet/releases/download/app-v1.1.0/rivet_1.1.0_amd64.AppImage
No response
No response
When the AI node model is set to take an input but no input is provided, a TypeError throws in the graph node:
I'm guessing it flagged from one of the variations of this, which is how I eventually found the problem of a missing model:
const tiktokenModel = openaiModels[model].tiktokenModel;
Based on some of the other patterns, such as in text nodes, it seemed like the setting dropdown would specify a default:
I wasn't aware that the input toggle was toggled on so it took a moment to find the issue. Would be awesome if there was some error state, or use the selected one as a default!
Support using fine-tuned models for GPT 3.5 fine-tuning
As a rivet user, I want my projects to be auto-saved, this would save the user a few cmd-s clicks to loosing the project work for unplanned app closes and crashes.
In order to shortcut searching for subgraphs, it would be convenient to be able to drill down into a subgraph node by double clicking it (or via a button in the details sidepanel)
Small feature but big for QOL, would be nice to be able to press esc to close an expanded text popup
Support custom models, perhaps via HuggingFace or another library out there that normalizes all the inputs to the models
Ran into issues running Rivet locally from source with yarn dev
, with errors around tsx. Noted that we were using Node 18, based on the documentation page saying 16+ was OK (https://rivet.ironcladapp.com/docs/getting-started/installation). But then checked Contributing.md, and saw it said to use 20+
Rivet did not run locally
MacOS, Node 18 (via nvm)
No response
No response
Makes connecting far nodes together much easier
yarn dev
Bundling to bin/executor-bundle.js...
Compiling to native binary for linux...
> [email protected]
> Fetching base Node.js binaries to PKG_CACHE_PATH
fetched-v18.5.0-linux-x64 [====================] 100%
> Warning Cannot resolve 'config.extends'
/home/vianney/dev/js/forks/rivet/packages/app-executor/bin/executor-bundle.js
Dynamic require may fail at run time, because the requested file
is unknown at compilation time and not included into executable.
Use a string literal as an argument for 'require', or leave it
as is and specify the resolved file name in 'scripts' option.
> Warning Cannot resolve 'path2'
/home/vianney/dev/js/forks/rivet/packages/app-executor/bin/executor-bundle.js
Dynamic require may fail at run time, because the requested file
is unknown at compilation time and not included into executable.
Use a string literal as an argument for 'require', or leave it
as is and specify the resolved file name in 'scripts' option.
Copied dist/rivet-app-executor to dist/app-executor-x86_64-unknown-linux-gnu for tauri sidecar
Running BeforeDevCommand (`yarn start`)
VITE v4.4.7 ready in 494 ms
➜ Local: http://localhost:5173/
➜ Network: use --host to expose
Info Watching /home/vianney/dev/js/forks/rivet/packages/app/src-tauri for changes...
Updating crates.io index
Updating git repository `https://github.com/tauri-apps/plugins-workspace`
Updating git repository `https://github.com/tauri-apps/plugins-workspace`
Downloaded gdkwayland-sys v0.15.3
Downloaded string_cache_codegen v0.5.2
Downloaded alloc-stdlib v0.2.2
[...]
Compiling regex-automata v0.3.6
Compiling json-patch v1.0.0
Compiling tauri-utils v1.4.0
The following warnings were emitted during compilation:
warning: `"pkg-config" "--libs" "--cflags" "libsoup-2.4" "libsoup-2.4 >= 2.62"` did not exit successfully: exit status: 1
error: failed to run custom build command for `soup2-sys v0.2.0`
Caused by:
process didn't exit successfully: `/home/vianney/dev/js/forks/rivet/packages/app/src-tauri/target/debug/build/soup2-sys-3b58d5373361346e/build-script-build` (exit status: 1)
--- stdout
cargo:rerun-if-env-changed=LIBSOUP_2.4_NO_PKG_CONFIG
cargo:rerun-if-env-changed=PKG_CONFIG_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG
cargo:rerun-if-env-changed=PKG_CONFIG
cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
cargo:rerun-if-env-changed=PKG_CONFIG_PATH
cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
cargo:warning=`"pkg-config" "--libs" "--cflags" "libsoup-2.4" "libsoup-2.4 >= 2.62"` did not exit successfully: exit status: 1
error: could not find system library 'libsoup-2.4' required by the 'soup2-sys' crate
--- stderr
Package libsoup-2.4 was not found in the pkg-config search path.
Perhaps you should add the directory containing `libsoup-2.4.pc'
to the PKG_CONFIG_PATH environment variable
Package 'libsoup-2.4', required by 'virtual:world', not found
Package 'libsoup-2.4', required by 'virtual:world', not found
warning: build failed, waiting for other jobs to finish...
The following warnings were emitted during compilation:
warning: `"pkg-config" "--libs" "--cflags" "javascriptcoregtk-4.0" "javascriptcoregtk-4.0 >= 2.24"` did not exit successfully: exit status: 1
error: failed to run custom build command for `javascriptcore-rs-sys v0.4.0`
Caused by:
process didn't exit successfully: `/home/vianney/dev/js/forks/rivet/packages/app/src-tauri/target/debug/build/javascriptcore-rs-sys-e38355fbdda0f806/build-script-build` (exit status: 1)
--- stdout
cargo:rerun-if-env-changed=JAVASCRIPTCOREGTK_4.0_NO_PKG_CONFIG
cargo:rerun-if-env-changed=PKG_CONFIG_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG
cargo:rerun-if-env-changed=PKG_CONFIG
cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
cargo:rerun-if-env-changed=PKG_CONFIG_PATH
cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
cargo:warning=`"pkg-config" "--libs" "--cflags" "javascriptcoregtk-4.0" "javascriptcoregtk-4.0 >= 2.24"` did not exit successfully: exit status: 1
error: could not find system library 'javascriptcoregtk-4.0' required by the 'javascriptcore-rs-sys' crate
--- stderr
Package javascriptcoregtk-4.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `javascriptcoregtk-4.0.pc'
to the PKG_CONFIG_PATH environment variable
Package 'javascriptcoregtk-4.0', required by 'virtual:world', not found
Package 'javascriptcoregtk-4.0', required by 'virtual:world', not found
Build
Kubuntu 23.04
Node.js v20.4.0
No response
No response
As demonstrated in this video https://youtu.be/QMaWfbosR_E there is a potential to use Retrieval Augmented Generation to redirect LLM calls to our own functions for specific use cases, where LLM could fail to respond correctly (for example a web search, a hard math calculation or a fresh summary of URL contents)
How could we achieve this feature in the spirit of Rivet?
We could have a block for:
routed into block for:
routed into multiple blocks for:
Issue: Routing directs the previous LLM response to the Assemble Node which is input as prompt to the Chat Node.
Expected: The entire previous chat log from the chat history "Assemble Prompt" Node is sent to the Assemble Prompt node that inputs to the Chat node.
Loops Tutorial behaves like a chatbot with complete chat history.
MacOS, Node 14.0.0, etc.
No response
When an audio file has been loaded directly into an Audio node (embedded in the project), the entire application slows down
Should be stored separately as to not slow down the application. The problem has to do with constant state serialization including the embedded data.
MacOS, Node 14.0.0, etc.
No response
No response
In the launch post, there was a short demo of Rivet, that quickly shows what it's about. Might be good to include that video on the readme (maybe as a gif), so that people browsing the repo can quickly see what Rivet looks like.
Love this work! Would be great if you add saving options. Whether for the LLM output to be stored as a txt or the To JSON Node
saves the json to a user-defined working directory :)
A plugin system will allow "node libraries" to be imported, and every possible node won't have to be in the core lib. Should make extensibility a lot easier.
Right now the only reference we have for adding custom nodes is the calculate external function hidden in the rivet example, briefly referenced in the video on the website.
I'm sure many use cases will rely on using special nodes so it would be nice if we had clearer documentation on external calls: https://rivet.ironcladapp.com/docs/node-reference/external-call
and plugins: https://rivet.ironcladapp.com/docs/user-guide/plugins/creating-plugins
I tried a simple graph with Chat (Anthropic) in the Browser executor but it fails with "Load failed". A bit of debugging and it appears that https://api.anthropic.com/v1/complete fails a CORS preflight check in the Browser executor. (OpenAI works fine.)
Anthropic works in the Node executor, so I am confident that the other Anthropic settings are correct.
(Incidentally... how do input nodes work in the Node executor? I needed to adapt my graph to not use Input. How does debugging the Node executor work? The UX flickers an orange badge but does not connect.)
With multiple graphs, when I drag graphs up/down with their drag handle it does not seem to actually reorder.
reorder the graphs
MacOS
none
After adding a faulty plugin in "Add Remote Plugin", no other plugin can be imported: the button on the right is stuck in the "Loading..." state. The project must be reopened before a plugin can be imported again.
Pasting a new URL in "Add Remote Plugin" should reset the button.
Kubuntu 23.04
rivet_1.2.1_amd64.AppImage
No response
No response
Currently there are no option to extract several outputs from a JSON-like output (from a chat, for example) and put into multiple entries in another text node by using string interpolation. I think it would be helpful to have this.
When I add AssemblyAI nodes into a subgraph, and call the subgraph from another graph, I get the following error:
Error: Unknown node type: assemblyAiTranscribeAudio
Error: Unknown node type: assemblyAiLemurQa
The nodes should be known and work.
macOS using the latest Rivet release from downloads page.
No response
No response
Here are the command I use to try build Rivet, and the resulting errors:
git clone --filter=blob:none [email protected]:Ironclad/rivet.git
cd rivet
nvm use 20
yarn
yarn dev
The yarn dev
command fails:
➤ YN0000: ┌ Project validation
➤ YN0057: │ @ironclad/rivet-app: Resolutions field will be ignored
➤ YN0000: └ Completed
➤ YN0000: ┌ Resolution step
➤ YN0002: │ @algolia/autocomplete-core@npm:1.9.3 doesn't provide @algolia/client-search (pbc410), requested by @algolia/autocomplete-shared
➤ YN0002: │ @algolia/autocomplete-core@npm:1.9.3 doesn't provide algoliasearch (p8ad5b), requested by @algolia/autocomplete-shared
➤ YN0002: │ @algolia/autocomplete-core@npm:1.9.3 doesn't provide search-insights (pfdb70), requested by @algolia/autocomplete-plugin-algolia-insights
➤ YN0002: │ @algolia/autocomplete-plugin-algolia-insights@npm:1.9.3 [e43f4] doesn't provide @algolia/client-search (pdf3b9), requested by @algolia/autocomplete-shared
➤ YN0002: │ @algolia/autocomplete-plugin-algolia-insights@npm:1.9.3 [e43f4] doesn't provide algoliasearch (p0f6bb), requested by @algolia/autocomplete-shared
➤ YN0002: │ @atlaskit/modal-dialog@npm:12.6.4 [388c2] doesn't provide react-dom (p71a81), requested by @atlaskit/portal
➤ YN0002: │ @atlaskit/popper@npm:5.5.3 [af08a] doesn't provide react-dom (pe6a9b), requested by react-popper
➤ YN0002: │ @atlaskit/side-navigation@npm:2.0.3 [388c2] doesn't provide react-dom (pe90e8), requested by @atlaskit/menu
➤ YN0002: │ @docsearch/react@npm:3.5.1 [45935] doesn't provide @algolia/client-search (pc8a10), requested by @algolia/autocomplete-preset-algolia
➤ YN0002: │ @ironclad/rivet-app@workspace:packages/app doesn't provide @typescript-eslint/parser (p52c17), requested by @typescript-eslint/eslint-plugin
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (pbd4a5) with version 18.2.0, which doesn't satisfy what @atlaskit/tokens requests
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (p09bd4) with version 18.2.0, which doesn't satisfy what @atlaskit/theme requests
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (p47042) with version 18.2.0, which doesn't satisfy what @atlaskit/icon requests
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (pc7cba) with version 18.2.0, which doesn't satisfy what @atlaskit/button and some of its descendants request
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (p613bc) with version 18.2.0, which doesn't satisfy what @atlaskit/menu requests
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (p281dc) with version 18.2.0, which doesn't satisfy what @atlaskit/popup requests
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (pad932) with version 18.2.0, which doesn't satisfy what @atlaskit/form and some of its descendants request
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (p318a7) with version 18.2.0, which doesn't satisfy what @atlaskit/textfield requests
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (pc532f) with version 18.2.0, which doesn't satisfy what @atlaskit/portal requests
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (p47850) with version 18.2.0, which doesn't satisfy what @atlaskit/banner and some of its descendants request
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (p7d69a) with version 18.2.0, which doesn't satisfy what @atlaskit/checkbox requests
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (pb1f52) with version 18.2.0, which doesn't satisfy what @atlaskit/css-reset requests
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (p25415) with version 18.2.0, which doesn't satisfy what @atlaskit/dropdown-menu and some of its descendants request
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (pde336) with version 18.2.0, which doesn't satisfy what @atlaskit/inline-edit and some of its descendants request
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (p15f9e) with version 18.2.0, which doesn't satisfy what @atlaskit/modal-dialog and some of its descendants request
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (pf703f) with version 18.2.0, which doesn't satisfy what @atlaskit/select and some of its descendants request
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (p39fd4) with version 18.2.0, which doesn't satisfy what @atlaskit/side-navigation and some of its descendants request
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (p67a5d) with version 18.2.0, which doesn't satisfy what @atlaskit/tabs requests
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (p581bd) with version 18.2.0, which doesn't satisfy what @atlaskit/textarea requests
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react (p35fc4) with version 18.2.0, which doesn't satisfy what @atlaskit/toggle requests
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react-dom (pe223a) with version 18.2.0, which doesn't satisfy what @atlaskit/menu requests
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react-dom (p7f140) with version 18.2.0, which doesn't satisfy what @atlaskit/popup requests
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react-dom (p21edf) with version 18.2.0, which doesn't satisfy what @atlaskit/portal requests
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react-dom (p6f1aa) with version 18.2.0, which doesn't satisfy what @atlaskit/dropdown-menu requests
➤ YN0060: │ @ironclad/rivet-app@workspace:packages/app provides react-dom (p3d925) with version 18.2.0, which doesn't satisfy what @atlaskit/select and some of its descendants request
➤ YN0002: │ @ironclad/rivet-core@workspace:packages/core doesn't provide @types/node (p2a077), requested by ts-node
➤ YN0002: │ @ironclad/rivet-core@workspace:packages/core doesn't provide @typescript-eslint/parser (pcafdb), requested by @typescript-eslint/eslint-plugin
➤ YN0002: │ @ironclad/rivet-node@workspace:packages/node doesn't provide @typescript-eslint/parser (p5d7b8), requested by @typescript-eslint/eslint-plugin
➤ YN0002: │ @ironclad/rivet@workspace:. doesn't provide @typescript-eslint/parser (p14739), requested by @typescript-eslint/eslint-plugin
➤ YN0002: │ @ironclad/trivet@workspace:packages/trivet doesn't provide @typescript-eslint/parser (pc3af5), requested by @typescript-eslint/eslint-plugin
➤ YN0060: │ docs@workspace:packages/docs provides react (p4e1cc) with version 18.2.0, which doesn't satisfy what @docusaurus/types requests
➤ YN0060: │ docs@workspace:packages/docs provides react (p9d5e3) with version 18.2.0, which doesn't satisfy what @docusaurus/core and some of its descendants request
➤ YN0060: │ docs@workspace:packages/docs provides react (p1334f) with version 18.2.0, which doesn't satisfy what @mdx-js/react requests
➤ YN0060: │ docs@workspace:packages/docs provides react (p0e283) with version 18.2.0, which doesn't satisfy what @docusaurus/preset-classic and some of its descendants request
➤ YN0060: │ docs@workspace:packages/docs provides react-dom (p1a640) with version 18.2.0, which doesn't satisfy what @docusaurus/types requests
➤ YN0060: │ docs@workspace:packages/docs provides react-dom (p47f6f) with version 18.2.0, which doesn't satisfy what @docusaurus/core and some of its descendants request
➤ YN0060: │ docs@workspace:packages/docs provides react-dom (p45133) with version 18.2.0, which doesn't satisfy what @docusaurus/preset-classic and some of its descendants request
➤ YN0002: │ eslint-config-react-app@npm:7.0.1 [388c2] doesn't provide @babel/plugin-syntax-flow (p32599), requested by eslint-plugin-flowtype
➤ YN0002: │ eslint-config-react-app@npm:7.0.1 [388c2] doesn't provide @babel/plugin-transform-react-jsx (pff2ca), requested by eslint-plugin-flowtype
➤ YN0000: │ Some peer dependencies are incorrectly met; run yarn explain peer-requirements <hash> for details, where <hash> is the six-letter p-prefixed code
➤ YN0000: └ Completed in 0s 223ms
➤ YN0000: ┌ Fetch step
➤ YN0019: │ @esbuild-darwin-arm64-npm-0.18.17-4da6dfeef9-9.zip appears to be unused - removing
➤ YN0019: │ @esbuild-darwin-arm64-npm-0.19.1-f737930702-9.zip appears to be unused - removing
➤ YN0019: │ @swc-core-darwin-arm64-npm-1.3.71-5ea24a12db-9.zip appears to be unused - removing
➤ YN0019: │ @tauri-apps-cli-darwin-arm64-npm-1.4.0-07239c8e68-9.zip appears to be unused - removing
➤ YN0019: │ fsevents-patch-19706e7e35-9.zip appears to be unused - removing
➤ YN0000: └ Completed in 0s 317ms
➤ YN0000: ┌ Link step
➤ YN0000: │ ESM support for PnP uses the experimental loader API and is therefore experimental
➤ YN0007: │ esbuild@npm:0.19.1 must be built because it never has been before or the last one failed
➤ YN0007: │ esbuild@npm:0.17.19 must be built because it never has been before or the last one failed
➤ YN0007: │ esbuild@npm:0.18.17 must be built because it never has been before or the last one failed
➤ YN0007: │ @swc/core@npm:1.3.71 [36b10] must be built because it never has been before or the last one failed
➤ YN0007: │ protobufjs@npm:7.2.4 must be built because it never has been before or the last one failed
➤ YN0007: │ core-js@npm:3.32.0 must be built because it never has been before or the last one failed
➤ YN0007: │ core-js-pure@npm:3.31.0 must be built because it never has been before or the last one failed
➤ YN0009: │ protobufjs@npm:7.2.4 couldn't be built successfully (exit code 1, logs can be found here: /tmp/xfs-46cfb9aa/build.log)
➤ YN0009: │ esbuild@npm:0.19.1 couldn't be built successfully (exit code 1, logs can be found here: /tmp/xfs-03f71264/build.log)
➤ YN0009: │ esbuild@npm:0.18.17 couldn't be built successfully (exit code 1, logs can be found here: /tmp/xfs-14790621/build.log)
➤ YN0009: │ esbuild@npm:0.17.19 couldn't be built successfully (exit code 1, logs can be found here: /tmp/xfs-07c8db9e/build.log)
➤ YN0000: └ Completed in 2s 306ms
➤ YN0000: Failed with errors in 3s 83ms
If I run it again, it fails with another error message:
yarn dev
Type Error: Cannot read properties of undefined (reading '/home/vianney/dev/js/forks/rivet/.pnp.cjs')
at wne (/home/vianney/dev/js/forks/rivet/.yarn/releases/yarn-4.0.0-rc.45.cjs:134:54215)
at LXe (/home/vianney/dev/js/forks/rivet/.yarn/releases/yarn-4.0.0-rc.45.cjs:134:54684)
at Object.zp (/home/vianney/dev/js/forks/rivet/.yarn/releases/yarn-4.0.0-rc.45.cjs:134:54825)
at /home/vianney/dev/js/forks/rivet/.yarn/releases/yarn-4.0.0-rc.45.cjs:650:4665
at Object.Sf (/home/vianney/dev/js/forks/rivet/.yarn/releases/yarn-4.0.0-rc.45.cjs:134:53360)
at vh.findPackageLocation (/home/vianney/dev/js/forks/rivet/.yarn/releases/yarn-4.0.0-rc.45.cjs:650:4620)
at /home/vianney/dev/js/forks/rivet/.yarn/releases/yarn-4.0.0-rc.45.cjs:184:1268
at Function.from (<anonymous>)
at qx (/home/vianney/dev/js/forks/rivet/.yarn/releases/yarn-4.0.0-rc.45.cjs:184:1012)
at wue (/home/vianney/dev/js/forks/rivet/.yarn/releases/yarn-4.0.0-rc.45.cjs:184:1595)
Build
Kubuntu 23.04
Node.js v20.6.1
The file logs:
cat /tmp/xfs-46cfb9aa/build.log
# This file contains the result of Yarn building a package (protobufjs@npm:7.2.4)
# Script name: postinstall
node:internal/process/esm_loader:48
internalBinding('errors').triggerUncaughtException(
^
TypeError [Error]: [ERR_IMPORT_ASSERTION_TYPE_MISSING]: Module "file:///home/vianney/dev/js/forks/rivet/.yarn/unplugged/protobufjs-npm-7.2.4-c40bd79e8d/node_modules/protobufjs/package.json" needs an import assertion of type "json"
at load$1 (file:///home/vianney/dev/js/forks/rivet/.pnp.loader.mjs:1487:17)
at nextLoad (node:internal/modules/esm/hooks:832:28)
at Hooks.load (node:internal/modules/esm/hooks:415:26)
at MessagePort.handleMessage (node:internal/modules/esm/worker:168:24)
at [nodejs.internal.kHybridDispatch] (node:internal/event_target:807:20)
at exports.emitMessage (node:internal/per_context/messageport:23:28) {
code: 'ERR_IMPORT_ASSERTION_TYPE_MISSING'
}
cat /tmp/xfs-03f71264/build.log
# This file contains the result of Yarn building a package (esbuild@npm:0.19.1)
# Script name: postinstall
node:internal/process/esm_loader:48
internalBinding('errors').triggerUncaughtException(
^
TypeError [Error]: [ERR_IMPORT_ASSERTION_TYPE_MISSING]: Module "file:///home/vianney/dev/js/forks/rivet/.yarn/unplugged/esbuild-npm-0.19.1-892202a3bf/node_modules/esbuild/package.json" needs an import assertion of type "json"
at load$1 (file:///home/vianney/dev/js/forks/rivet/.pnp.loader.mjs:1487:17)
at nextLoad (node:internal/modules/esm/hooks:832:28)
at Hooks.load (node:internal/modules/esm/hooks:415:26)
at handleMessage (node:internal/modules/esm/worker:168:24)
at checkForMessages (node:internal/modules/esm/worker:117:28)
at process.<anonymous> (node:internal/modules/esm/worker:136:5)
at process.emit (node:events:514:28)
at process.emit (/home/vianney/dev/js/forks/rivet/.pnp.cjs:29840:25) {
code: 'ERR_IMPORT_ASSERTION_TYPE_MISSING'
}
The other log files are the same.
No response
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.