Skip to content

Commit 1973a36

Browse files
committed
Add install instructions and brief description
1 parent 7f9c72e commit 1973a36

File tree

1 file changed

+97
-5
lines changed

1 file changed

+97
-5
lines changed

README.md

+97-5
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,89 @@
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+
187
# Development
288

389
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...
15101

16102
Or using Nix to build/run the project...
17103

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
20106
5. `nix run .#cli` run the cli
21107

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>`
24116

25-
## Logs and tracing
117+
# Logs and tracing
26118

27119
Open Telemetry is used to collect ~~logs and~~ traces which requires some kind of collector and UI.
28120
To use Jaeger on your local system do

0 commit comments

Comments
 (0)