1
+ # Vision
2
+
3
+ Ayup will figure out how to build, run and serve some AI/ML inference code you provide on a remote
4
+ (or local) computer. It saves you time when dealing with unfamiliar code and makes using a remote
5
+ machine for building and executing code easy.
6
+
7
+ Ayup avoids relying on you to read documentation and write configuration files. Instead it tries to
8
+ solve problems with you interactively.
9
+
10
+ ![ ayup-push-1] ( https://github.com/user-attachments/assets/9b7c5ff9-e2a3-4a90-a0d8-4262c78dc6d5 )
11
+
12
+ Both the Ayup server and client are open source. The Ayup server can run on most Linux systems and
13
+ the client on Linux, Mac and (eventually) Windows. The intention is that it is easy for you to self
14
+ host the Ayup server.
15
+
16
+ Web applications have their ports forwarded to the client. Allowing them to be accessed as if they
17
+ were running locally. Applications can also be served on a sub-domain of the server via the builtin
18
+ proxy.
19
+
20
+ The initial focus of Ayup is on AI/ML applications which provide some inference service.
21
+
22
+ # State / Roadmap
23
+
24
+ Ayup is in the early stages of production. Some of the things that have been done so far are
25
+
26
+ - [x] Quick source upload
27
+ - [x] Build and serve Python applications of a particular form
28
+ - [x] Port forwarding to client with fixed ports
29
+ - [x] Containerd support (allows instant loading of containers and future k8s support)
30
+ - [x] Subdomain routing
31
+ - [x] Build and run applications with a Dockerfile
32
+
33
+ In the pipeline (in no particular order)
34
+
35
+ - [ ] Detect appropriate ports to forward
36
+ - [ ] Multiple simultaneous applications
37
+ - [ ] Pluggable analysis/build/run step(s)
38
+ - [ ] Secure server login and connection
39
+ - [ ] Bundle rootless Containerd, Buildkit, Nerdctl with the server
40
+
41
+ # Install
42
+
43
+ The client CLI can be installed by copying the following into a terminal session:
44
+
45
+ ``` sh
46
+ curl -#L https://raw.githubusercontent.com/premAI-io/Ayup/main/script/install.sh | sh
47
+ ```
48
+
49
+ Or you can download the executable from the [ release page] ( https://github.com/premAI-io/Ayup/releases/latest ) .
50
+ It's just one file, you can copy it to ` /usr/bin ` or wherever you put executables on your system.
51
+
52
+ Presently the server is in the same executable as the client. However it has some dependencies which
53
+ are a pain. Eventually we'll magic these away, but in the mean time see the Development section.
54
+
55
+ # Running
56
+
57
+ ## Client
58
+
59
+ Enter the directory where the source of the project you wish to run is and do
60
+
61
+ ``` sh
62
+ $ ay push
63
+ ```
64
+
65
+ For now this will stupidly try to connect to localhost. Until we create a secure login process
66
+ you will need to set the remote address (see ` ay --help ` )
67
+
68
+ ## Server
69
+
70
+ The server can be run as root with
71
+
72
+ ``` sh
73
+ $ ay daemon start
74
+ ```
75
+
76
+ This requires a Buildkitd instance to be running and pointed at a Containerd worker. This is not
77
+ such a common thing, so see the development section for now which has details on using Nix to get
78
+ them. Eventually we will bundle these up.
79
+
80
+ Often you will need to set the Containerd address which can be done with an environment var or
81
+ command line option, see ` ay daemon start --help ` .
82
+
83
+ Installing Docker or Kubernetes will provide a Containerd instance. It's socket will be somewhere
84
+ like ` /run/containerd/containerd.sock ` , ` /run/docker/containerd/containerd.sock ` or
85
+ ` /run/k3s/containerd/containerd.sock ` .
86
+
1
87
# Development
2
88
3
89
Ayup is a standard Go project and thus easy to build in most enviroments. However Nix
@@ -15,14 +101,20 @@ Then there is a choice between using the Nix dev shell...
15
101
16
102
Or using Nix to build/run the project...
17
103
18
- 3 . ` nix run .#dev ` in another terminal to start buildkit
19
- 4 . ` nix build ` build the whole project
104
+ 3 . ` sudo nix run .#dev` in another terminal to start buildkit
105
+ 4 . ` sudo nix run .#server ` run the server
20
106
5 . ` nix run .#cli ` run the cli
21
107
22
- Presently Docker and buildkit are required to be present. Buildkit is provided by Nix,
23
- but Docker needs to be installed by other means.
108
+ Also you don't need to Git clone this project onto a system to run it with Nix. You can run the
109
+ flake from this repo with
110
+
111
+ ` sudo nix run github:premAI-io/Ayup#<dev,server,cli> `
112
+
113
+ Or if you want to try out a dev branch
114
+
115
+ ` sudo nix run github:<user>/<repo>/<branch>#<dev,server,cli> `
24
116
25
- ## Logs and tracing
117
+ # Logs and tracing
26
118
27
119
Open Telemetry is used to collect ~~ logs and~~ traces which requires some kind of collector and UI.
28
120
To use Jaeger on your local system do
0 commit comments