[{"data":1,"prerenderedAt":609},["ShallowReactive",2],{"navigation_docs_en":3,"-en-getting-started-installation":60,"-en-getting-started-installation-surround":604},[4,30],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Getting Started","/en/getting-started","en/1.getting-started",[9,14,19,24],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","/en/getting-started/introduction","en/1.getting-started/1.introduction","i-lucide-house",{"title":15,"path":16,"stem":17,"icon":18},"Tech Stack","/en/getting-started/stack","en/1.getting-started/2.stack","i-lucide-cpu",{"title":20,"path":21,"stem":22,"icon":23},"Installation on your own infrastructure","/en/getting-started/installation","en/1.getting-started/3.installation","i-lucide-hard-drive-download",{"title":25,"path":26,"stem":27,"icon":28},"Directory Structure","/en/getting-started/project-structure","en/1.getting-started/4.project-structure","i-lucide-folder-tree",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Features","/en/features","en/2.features",[35,40,45,50,55],{"title":36,"path":37,"stem":38,"icon":39},"Chat with AI","/en/features/chats","en/2.features/1.chats","i-lucide-message-square-text",{"title":41,"path":42,"stem":43,"icon":44},"Many Models Conversations","/en/features/many-models-conversations","en/2.features/2.many-models-conversations","i-lucide-brain",{"title":46,"path":47,"stem":48,"icon":49},"Restrict domains","/en/features/restrict-domains","en/2.features/3.restrict-domains","i-lucide-at-sign",{"title":51,"path":52,"stem":53,"icon":54},"Agents","/en/features/agents","en/2.features/4.agents","i-lucide-bot",{"title":56,"path":57,"stem":58,"icon":59},"Custom Context","/en/features/custom-context","en/2.features/5.custom-context","i-lucide-table-of-contents",{"id":61,"title":20,"body":62,"description":597,"extension":598,"layout":599,"links":599,"meta":600,"navigation":601,"path":21,"seo":602,"stem":22,"__hash__":603},"docs_en/en/1.getting-started/3.installation.md",{"type":63,"value":64,"toc":583},"minimark",[65,81,84,87,92,95,132,136,162,164,168,173,176,247,251,262,449,452,465,469,480,491,494,514,523,525,529,533,539,550,554,560,562,566,579],[66,67,68,75,78],"tip",{},[69,70,71],"p",{},[72,73,74],"strong",{},"Local-First & Secure",[76,77],"br",{},[69,79,80],{},"Singularities AI runs all LLMs on your own infrastructure, ensuring data privacy and security.",[69,82,83],{},"Singularities AI is a feature-rich web platform for interacting with Ollama-powered text-based AI models. It is designed for both beginners and professionals, offering customization, role management, and a responsive interface.",[85,86],"hr",{},[88,89,91],"h2",{"id":90},"get-the-source-code","Get the Source Code",[69,93,94],{},"Singularities AI is open source and available on GitHub. To get started, clone the repository:",[96,97,103],"pre",{"className":98,"code":99,"filename":100,"language":101,"meta":102,"style":102},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","git clone https://github.com/Singularities-AI/singularities-ai.git\ncd singularities-ai\n","Terminal","bash","",[104,105,106,122],"code",{"__ignoreMap":102},[107,108,111,115,119],"span",{"class":109,"line":110},"line",1,[107,112,114],{"class":113},"sBMFI","git",[107,116,118],{"class":117},"sfazB"," clone",[107,120,121],{"class":117}," https://github.com/Singularities-AI/singularities-ai.git\n",[107,123,125,129],{"class":109,"line":124},2,[107,126,128],{"class":127},"s2Zo4","cd",[107,130,131],{"class":117}," singularities-ai\n",[88,133,135],{"id":134},"prerequisites","Prerequisites",[137,138,139,150,153,156,159],"ul",{},[140,141,142,149],"li",{},[143,144,148],"a",{"href":145,"rel":146},"https://github.com/ollama/ollama",[147],"nofollow","Ollama"," installed and running",[140,151,152],{},"Java 21 (for the Spring Boot API)",[140,154,155],{},"Node.js ≥ 20 (for the frontend)",[140,157,158],{},"pnpm ≥ 8 (for package management)",[140,160,161],{},"PostgreSQL ≥ 16 (for data persistence)",[85,163],{},[88,165,167],{"id":166},"installation","Installation",[169,170,172],"h3",{"id":171},"_1-set-up-postgresql","1. Set Up PostgreSQL",[69,174,175],{},"Install and start PostgreSQL. Create a new database and user for Singularities AI:",[96,177,179],{"className":98,"code":178,"filename":100,"language":101,"meta":102,"style":102},"sudo -u postgres psql -c \"CREATE DATABASE singularities;\"\nsudo -u postgres psql -c \"CREATE USER singularities WITH PASSWORD 'yourpassword';\"\nsudo -u postgres psql -c \"GRANT ALL PRIVILEGES ON DATABASE singularities TO singularities;\"\n",[104,180,181,208,227],{"__ignoreMap":102},[107,182,183,186,189,192,195,198,202,205],{"class":109,"line":110},[107,184,185],{"class":113},"sudo",[107,187,188],{"class":117}," -u",[107,190,191],{"class":117}," postgres",[107,193,194],{"class":117}," psql",[107,196,197],{"class":117}," -c",[107,199,201],{"class":200},"sMK4o"," \"",[107,203,204],{"class":117},"CREATE DATABASE singularities;",[107,206,207],{"class":200},"\"\n",[107,209,210,212,214,216,218,220,222,225],{"class":109,"line":124},[107,211,185],{"class":113},[107,213,188],{"class":117},[107,215,191],{"class":117},[107,217,194],{"class":117},[107,219,197],{"class":117},[107,221,201],{"class":200},[107,223,224],{"class":117},"CREATE USER singularities WITH PASSWORD 'yourpassword';",[107,226,207],{"class":200},[107,228,230,232,234,236,238,240,242,245],{"class":109,"line":229},3,[107,231,185],{"class":113},[107,233,188],{"class":117},[107,235,191],{"class":117},[107,237,194],{"class":117},[107,239,197],{"class":117},[107,241,201],{"class":200},[107,243,244],{"class":117},"GRANT ALL PRIVILEGES ON DATABASE singularities TO singularities;",[107,246,207],{"class":200},[169,248,250],{"id":249},"_2-configure-and-run-the-api","2. Configure and Run the API",[69,252,253,254,257,258,261],{},"Clone the repository and navigate to the ",[104,255,256],{},"backend"," directory. Update the following properties in ",[104,259,260],{},"application.properties",":",[263,264,265,281],"table",{},[266,267,268],"thead",{},[269,270,271,275,278],"tr",{},[272,273,274],"th",{},"Property",[272,276,277],{},"Example Value",[272,279,280],{},"Description",[282,283,284,300,315,330,345,360,375,390,405,420,435],"tbody",{},[269,285,286,292,297],{},[287,288,289],"td",{},[104,290,291],{},"singularities.app.jwtSecret",[287,293,294],{},[104,295,296],{},"your_jwt_secret",[287,298,299],{},"JWT secret for authentication",[269,301,302,307,312],{},[287,303,304],{},[104,305,306],{},"spring.mail.host",[287,308,309],{},[104,310,311],{},"smtp.example.com",[287,313,314],{},"SMTP host for email",[269,316,317,322,327],{},[287,318,319],{},[104,320,321],{},"spring.mail.username",[287,323,324],{},[104,325,326],{},"user@example.com",[287,328,329],{},"SMTP username",[269,331,332,337,342],{},[287,333,334],{},[104,335,336],{},"spring.mail.password",[287,338,339],{},[104,340,341],{},"yourpassword",[287,343,344],{},"SMTP password",[269,346,347,352,357],{},[287,348,349],{},[104,350,351],{},"app.name",[287,353,354],{},[104,355,356],{},"Singularities AI",[287,358,359],{},"Your app name",[269,361,362,367,372],{},[287,363,364],{},[104,365,366],{},"app.url",[287,368,369],{},[104,370,371],{},"http://localhost:8080",[287,373,374],{},"API base URL",[269,376,377,382,387],{},[287,378,379],{},[104,380,381],{},"app.url.client",[287,383,384],{},[104,385,386],{},"http://localhost:7000",[287,388,389],{},"Frontend URL",[269,391,392,397,402],{},[287,393,394],{},[104,395,396],{},"spring.ai.ollama.base-url",[287,398,399],{},[104,400,401],{},"http://localhost:11434",[287,403,404],{},"Ollama server URL",[269,406,407,412,417],{},[287,408,409],{},[104,410,411],{},"spring.datasource.url",[287,413,414],{},[104,415,416],{},"jdbc:postgresql://localhost:5432/singularities",[287,418,419],{},"PostgreSQL connection URL",[269,421,422,427,432],{},[287,423,424],{},[104,425,426],{},"spring.datasource.username",[287,428,429],{},[104,430,431],{},"singularities",[287,433,434],{},"PostgreSQL username",[269,436,437,442,446],{},[287,438,439],{},[104,440,441],{},"spring.datasource.password",[287,443,444],{},[104,445,341],{},[287,447,448],{},"PostgreSQL password",[69,450,451],{},"Start the API:",[96,453,455],{"className":98,"code":454,"filename":100,"language":101,"meta":102,"style":102},"mvn spring-boot:run\n",[104,456,457],{"__ignoreMap":102},[107,458,459,462],{"class":109,"line":110},[107,460,461],{"class":113},"mvn",[107,463,464],{"class":117}," spring-boot:run\n",[169,466,468],{"id":467},"_3-configure-and-run-the-frontend","3. Configure and Run the Frontend",[69,470,471,472,475,476,479],{},"Navigate to the ",[104,473,474],{},"frontend"," directory. Update the ",[104,477,478],{},".env"," file:",[96,481,485],{"className":482,"code":483,"filename":478,"language":484,"meta":102,"style":102},"language-env shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","API_URL=http://localhost:8080\n","env",[104,486,487],{"__ignoreMap":102},[107,488,489],{"class":109,"line":110},[107,490,483],{},[69,492,493],{},"Install dependencies and start the frontend:",[96,495,497],{"className":98,"code":496,"filename":100,"language":101,"meta":102,"style":102},"pnpm install\npnpm dev\n",[104,498,499,507],{"__ignoreMap":102},[107,500,501,504],{"class":109,"line":110},[107,502,503],{"class":113},"pnpm",[107,505,506],{"class":117}," install\n",[107,508,509,511],{"class":109,"line":124},[107,510,503],{"class":113},[107,512,513],{"class":117}," dev\n",[515,516,517],"callout",{},[69,518,519,520,522],{},"The frontend will be available at ",[104,521,386],{},".",[85,524],{},[88,526,528],{"id":527},"configuration","Configuration",[169,530,532],{"id":531},"api-configuration","API Configuration",[69,534,535,536,538],{},"You can customize the API behavior by editing ",[104,537,260],{},". For example, to change the server port:",[96,540,544],{"className":541,"code":542,"filename":260,"language":543,"meta":102,"style":102},"language-properties shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","server.port=8080\n","properties",[104,545,546],{"__ignoreMap":102},[107,547,548],{"class":109,"line":110},[107,549,542],{},[169,551,553],{"id":552},"frontend-configuration","Frontend Configuration",[69,555,556,557,559],{},"Update the ",[104,558,478],{}," file to match your API URL and other environment variables as needed.",[85,561],{},[88,563,565],{"id":564},"support","Support",[69,567,568,569,574,575,522],{},"For questions, suggestions, or assistance, ",[143,570,573],{"href":571,"rel":572},"https://github.com/Singularities-AI/singularities-ai/issues",[147],"open an issue"," or contact ",[143,576,578],{"href":577},"mailto:contact@singularities-ai.com","contact@singularities-ai.com",[580,581,582],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}",{"title":102,"searchDepth":124,"depth":124,"links":584},[585,586,587,592,596],{"id":90,"depth":124,"text":91},{"id":134,"depth":124,"text":135},{"id":166,"depth":124,"text":167,"children":588},[589,590,591],{"id":171,"depth":229,"text":172},{"id":249,"depth":229,"text":250},{"id":467,"depth":229,"text":468},{"id":527,"depth":124,"text":528,"children":593},[594,595],{"id":531,"depth":229,"text":532},{"id":552,"depth":229,"text":553},{"id":564,"depth":124,"text":565},"Deploy Singularities AI on your own infrastructure.","md",null,{},{"icon":23},{"description":597,"title":20},"nQZl4_9eEI5rHKSUlezlPPidw6hB7N8_ATLkFcLFzf8",[605,607],{"title":15,"path":16,"stem":17,"description":606,"icon":18,"children":-1},"Discover Singularities AI Tech Stack",{"title":25,"path":26,"stem":27,"description":608,"icon":28,"children":-1},"Learn about the project structure of Singularities AI latest version.",1761154202526]